2013-08-04 219 views
8

我有一个图片框加载了一张图片,当我点击图片时我想要读取图片框中的位置(如x,y)这可能吗 ?更重要的是,当我将鼠标悬停时,我可以读取这些坐标(点)吗?点击图片框上的鼠标坐标

我知道我必须使用给定的事件(鼠标单击和鼠标悬停),但不知道如何读取鼠标指针碰巧的坐标。

回答

1

如何连接MouseUp事件然后从MouseEventArgs获取位置?

像这样:

private void pictureBox_MouseUp(object sender, MouseEventArgs e) 
{ 
    Point mousePointerLocation = e.Location; 
} 
+0

它只适用于变化:Point MouseLoc = e.Location;谢谢! – Razvan

+0

是的,写完后我想出了我的错误。感谢您指出!很高兴帮助! :) – jmelhus

2

你可以得到的X和Y坐标如下,

this.Cursor = new Cursor(Cursor.Current.Handle); 

    int xCoordinate = Cursor.Position.X; 
    int yCoordinate = Cursor.Position.Y; 

如果你想要得到的图片框中的坐标,使用下面的代码,

private void pictureBox1_MouseUp(object sender, MouseEventArgs e) 
{ 
    int xCoordinate = e.X; 
    int yCoordinate = e.Y; 
} 
+0

它的工作原理!谢谢! – Razvan

+0

您并不需要mouseUp的全部功能,但您可以在mouse_hover中使用它 –

+0

这给出了相对于FORM的坐标。不是图片框的边界... – bonCodigo

4

我只是总结答案:

MouseClick,MouseUp和很多其他事件你有MouseEventArgs其中包含Location的鼠标。

MouseHover但是你没有MouseEventArgs和为此,如果你需要将光标的位置,使用编码器例如:

private void Form1_MouseHover(object sender, EventArgs e) 
    { 
    this.Cursor = new Cursor(Cursor.Current.Handle); 

    int xCoordinate = Cursor.Position.X; 
    int yCoordinate = Cursor.Position.Y; 
    } 
20

虽然其他的答案是正确的,让我,我点添加到它。 您已指出您需要为此目的连接MouseClickMouseOver事件。其实没必要勾选那些事件来得到Coordinates,你可以在Click事件本身中得到Coordinates

private void pictureBox1_Click(object sender, EventArgs e) 
{ 
    MouseEventArgs me = (MouseEventArgs)e; 
    Point coordinates = me.Location; 
} 

上面的代码工作,因为Click事件的e参数封装MouseEventArgs你可以只投它,利用它。

+0

如果OP想要(我想很明显)得到相对于图片框的点击点坐标,这是答案。 – bonCodigo

+0

这是正确的,只要在图片框中呈现图片时没有转换。如果渲染版本被拉伸,缩放或平移,那么'MouseEventArgs.Location'属性将需要应用相同的变换来获取图像坐标中的点击。 – kdbanman

+0

@kdbanman转换与获取图片框的点击位置有什么关系? Op需要鼠标坐标相对于图像框而不是图像。 –