0

我正在绘制一个继承自 PictureBox 的 MyPictureBox,并且我重写了它,OnMouseClick
我将参数设置为:(MouseEventArgs e)所以我在单击时获得了鼠标坐标,
问题是坐标是MyPictureBox相对坐标,而我需要从Form.

如何做呢 ?

谢谢

4

2 回答 2

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..
    }
于 2013-01-29T12:35:49.950 回答
0

最简单的方法是使用

this.PointToClient(Cursor.Position);

这将获得鼠标光标相对于表单的位置。

于 2013-01-29T11:31:05.573 回答