鼠标点击覆盖在PictureBox上协调表格鼠标 - C#

时间:2013-01-29 11:25:12

标签: c# winforms picturebox mouseclick-event

我正在绘制一个继承自PictureBox的MyPictureBox,我将其覆盖OnMouseClick
我将参数设置为:(MouseEventArgs e)所以我点击鼠标时协调鼠标,
问题是坐标是MyPictureBox相对坐标,而我需要Form的协调坐标。

怎么做?

由于

2 个答案:

答案 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);

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