目前,我正在使用WPF Image
控件来显示图像。我想执行以下操作:在MouseUp
,MouseDown
或MouseMove
事件中,我想获取光标下点的坐标,而不是参考左上角控制的,但是相对于显示的位图的实际坐标,其可能已经被重新缩放,或者可以具有与控件本身不同的纵横比。如果备用控件提供此功能,我会很高兴听到它。提前谢谢。
编辑:由于长宽比不同,我也很想知道控件的坐标是否在图像范围之外。
答案 0 :(得分:3)
您可以使用Visual
类的各种TransformTo*方法获取,相对于特定控件进行协调,它会将所有转换应用于可视化树。
此外,如果您将MouseUp
,MouseDown
和MouseMove
附加到Image
控件本身,您应该已经从MouseButtonEventArgs
获取正确的坐标如果您在控件的可视范围之外使用鼠标,则不会获得这些事件,因此您不需要额外的代码检查坐标是否超出范围。
如果实际目标是找出鼠标触摸位图图像的哪个实际像素(正如您对位图/像素编辑软件所需),事情会变得更加困难,因为WPF使用与屏幕上的像素不直接相关的虚拟设备indendent像素或已在Image
控件中呈现的位图中的像素。 Image
控件在内部根据位图文件本身的DPI设置以及操作系统的DPI设置来缩放位图图像。
答案 1 :(得分:3)
你可以通过这种方式得到鼠标的坐标:
private void image1_MouseDown(object sender, MouseButtonEventArgs e)
{
Point point = e.GetPosition(image1); //position relative to the image
Point point2 = e.GetPosition(this); //position relative to the window
}
希望回答你问题的一部分。