我正在绘制一个继承自 PictureBox 的 MyPictureBox,并且我重写了它,OnMouseClick
我将参数设置为:(MouseEventArgs e)
所以我在单击时获得了鼠标坐标,
问题是坐标是MyPictureBox
相对坐标,而我需要从Form
.
如何做呢 ?
谢谢
我正在绘制一个继承自 PictureBox 的 MyPictureBox,并且我重写了它,OnMouseClick
我将参数设置为:(MouseEventArgs e)
所以我在单击时获得了鼠标坐标,
问题是坐标是MyPictureBox
相对坐标,而我需要从Form
.
如何做呢 ?
谢谢
首先将传递的鼠标坐标映射到屏幕上。然后将其映射回表单的客户端坐标。所以典型的代码看起来像这样,为了清楚起见,拼写出来:
private void pictureBox1_MouseDown(object sender, MouseEventArgs e) {
var pbox = (PictureBox)sender;
var form = this;
var screenPos = pbox.PointToScreen(e.Location);
var formPos = form.PointToClient(screenPos);
// etc..
}
或简短版本:
private void pictureBox1_MouseDown(object sender, MouseEventArgs e) {
var formPos = this.PointToClient(pictureBox1.PointToScreen(e.Location));
// etc..
}
最简单的方法是使用
this.PointToClient(Cursor.Position);
这将获得鼠标光标相对于表单的位置。