我正在绘制一个继承自PictureBox的MyPictureBox,我将其覆盖OnMouseClick
我将参数设置为:(MouseEventArgs e)
所以我点击鼠标时协调鼠标,
问题是坐标是MyPictureBox
相对坐标,而我需要Form
的协调坐标。
怎么做?
由于
答案 0 :(得分:2)
首先将传递的鼠标坐标映射到屏幕。然后将其映射回表单的客户端坐标。因此,典型的代码看起来像这样,为清晰起见:
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..
}
答案 1 :(得分:0)
最简单的方法是使用
this.PointToClient(Cursor.Position);
这将获得鼠标光标相对于表单的位置。