1

目前,我正在使用 WPFImage控件来显示图像。我想做以下事情:在MouseUp,MouseDownMouseMove事件上,我想获取光标下点的坐标,而不是参考控件的左上角,而是相对于显示的位图的实际坐标,可能已重新缩放,或者可能具有与控件本身不同的纵横比。如果备用控件提供此功能,我同样会很高兴听到它。提前致谢。

编辑:如果由于纵横比不同,控件的坐标超出了图像的范围,我也想知道它。

4

2 回答 2

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
}

希望回答了您的部分问题。

于 2012-11-19T10:13:46.967 回答
3

您可以使用类的各种TransformTo*方法Visual来获取相对于特定控件的坐标,它将考虑应用于可视树的所有转换。

此外,如果您将MouseUp,MouseDown和附加MouseMoveImage控件本身,您应该已经MouseButtonEventArgs从代码检查坐标是否超出范围。

如果您的实际目标是找出位图图像的哪个实际像素已被鼠标触摸(因为您需要位图/像素编辑软件),那么事情会变得更加困难,因为 WPF 使用不直接相关的虚拟设备缩进像素到屏幕上的像素或已在Image控件中呈现的位图中的像素。该Image控件在内部根据位图文件本身的 DPI 设置和操作系统的 DPI 设置来缩放位图图像。

于 2012-11-19T10:09:04.547 回答