目前,我正在使用 WPFImage
控件来显示图像。我想做以下事情:在MouseUp
,MouseDown
或MouseMove
事件上,我想获取光标下点的坐标,而不是参考控件的左上角,而是相对于显示的位图的实际坐标,可能已重新缩放,或者可能具有与控件本身不同的纵横比。如果备用控件提供此功能,我同样会很高兴听到它。提前致谢。
编辑:如果由于纵横比不同,控件的坐标超出了图像的范围,我也想知道它。
目前,我正在使用 WPFImage
控件来显示图像。我想做以下事情:在MouseUp
,MouseDown
或MouseMove
事件上,我想获取光标下点的坐标,而不是参考控件的左上角,而是相对于显示的位图的实际坐标,可能已重新缩放,或者可能具有与控件本身不同的纵横比。如果备用控件提供此功能,我同样会很高兴听到它。提前致谢。
编辑:如果由于纵横比不同,控件的坐标超出了图像的范围,我也想知道它。
您可以通过这种方式获取鼠标的坐标:
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
}
希望回答了您的部分问题。
您可以使用类的各种TransformTo*方法Visual
来获取相对于特定控件的坐标,它将考虑应用于可视树的所有转换。
此外,如果您将MouseUp
,MouseDown
和附加MouseMove
到Image
控件本身,您应该已经MouseButtonEventArgs
从代码检查坐标是否超出范围。
如果您的实际目标是找出位图图像的哪个实际像素已被鼠标触摸(因为您需要位图/像素编辑软件),那么事情会变得更加困难,因为 WPF 使用不直接相关的虚拟设备缩进像素到屏幕上的像素或已在Image
控件中呈现的位图中的像素。该Image
控件在内部根据位图文件本身的 DPI 设置和操作系统的 DPI 设置来缩放位图图像。