Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/259.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在类中获取表单坐标_C#_Draw_Mouse Position - Fatal编程技术网

C# 在类中获取表单坐标

C# 在类中获取表单坐标,c#,draw,mouse-position,C#,Draw,Mouse Position,基本上,我用一个方法创建了一个类,该方法每次单击我的表单(应该在我单击的地方画一条线)时都被调用,如下所示: public void Dessiner(Graphics Fg) { Point p = Form1.MousePosition; Fg.DrawLine(MyPen,p.X,p.Y,p.X+2,p.Y+2); } 问题是,当我在窗体的mousedown事件中调用此方法时,它每次都将行放置在错误的位置 注:该方法只能取图形Fg,线的绘制必须在类的方法内完成 我做错了

基本上,我用一个方法创建了一个类,该方法每次单击我的表单(应该在我单击的地方画一条线)时都被调用,如下所示:

public void Dessiner(Graphics Fg)
{

    Point p = Form1.MousePosition;
    Fg.DrawLine(MyPen,p.X,p.Y,p.X+2,p.Y+2);
}
问题是,当我在窗体的mousedown事件中调用此方法时,它每次都将行放置在错误的位置

注:该方法只能取图形Fg,线的绘制必须在类的方法内完成


我做错了什么?

您需要使用
PointToClient()


从何处获取Fg?很抱歉,Fg是在我的表单中声明的我的图形的实例:Fg是我在表单中创建的图形类的实例,因此基本上(在表单中)Fg=this.createGraphics();之后,它被用作我的方法的参数。当你说错误的点时,你能更具体一点吗?请注意,返回的结果是屏幕(而不是表单)相对坐标。非常感谢你的帮助,我从未完全理解如何使用当前表单!来自所有人的巨大帮助!!!
public partial class Form1 : Form
{
    DrawingHelper dh;
    public Form1()
    {
        InitializeComponent();

        dh=new DrawingHelper(this);

    }

    private void Form1_MouseDown(object sender, MouseEventArgs e)
    {
        dh.Desser(this.CreateGraphics());
    }
}

public class DrawingHelper
{
    Form form;
    public DrawingHelper(Form form)
    {
        this.form  =form;
    }
    public void Desser(Graphics Fg)
    {
        var pt=form.PointToClient(Form.MousePosition);
        Fg.DrawLine(Pens.Black, pt.X,pt.Y, pt.X+2, pt.Y+2);
    }
}