获取 class 内的表单坐标
Getting Form coordinates within class
基本上我已经创建了一个 Class 方法,每次单击我的表单时都会调用该方法(它应该在我单击的地方画一条线)它如下所示:
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,线的绘制必须在class的方法内完成。
我做错了什么?
你需要用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);
}
}
基本上我已经创建了一个 Class 方法,每次单击我的表单时都会调用该方法(它应该在我单击的地方画一条线)它如下所示:
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,线的绘制必须在class的方法内完成。
我做错了什么?
你需要用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);
}
}