在课堂上获取表格坐标

时间:2015-12-03 00:25:08

标签: 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);
}

问题是当我在Forms的mousedown事件中调用此方法时,它每次都会将行放在错误的位置。

注意:该方法只能获取图形Fg,并且该线的绘制必须在类的方法中完成。

我做错了什么?

1 个答案:

答案 0 :(得分:1)

您需要使用PointToClient()

转换坐标
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);
    }
}