我是 Windows Presentation Foundation 的初学者。
我有一个 Canvas ,其中有一个小方形 Canvas 。在这个小方形 Canvas 内我有一个图像。
我已将事件处理程序附加到该图像,当用户单击该图像时,用户可以获取图像的当前位置。
每当用户点击该图像时,他/她都会收到一个提示消息框,用户可以在其中获取当前要打印的图像位置。
当用户在图像上按左键单击时,一切正常。
但是,当用户第一次在图像上右键单击并突然在同一张图像上按左键单击时,就会出现问题,它没有显示相同的值。
我没有在右键单击上附加任何事件处理程序。
我正在使用以下代码:
Image objImage = new Image();
objImage .Height =12;
objImage .Width = 12;
objImage .Stretch = Stretch.UniformToFill;
imageAck.MouseLeftButtonDown += new MouseButtonEventHandler(objImageMouseLeftButtonDown);
private void objImageMouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
Point mouseCurrent = e.GetPosition(null);
}
我在 mouseCurrent 中没有得到相同的值
最佳答案
使用e.GetPosition
,获取鼠标指针相对于被单击的元素的位置,而不是该元素所属的 Canvas 。
要获取图像在Canvas
上的实际位置,您需要使用Canvas.GetLeft
和Canvas.GetTop
方法。这是一个例子:
private void objImageMouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
double left = Canvas.GetLeft((UIElement)sender);
double top = Canvas.GetTop((UIElement)sender);
}
然后,您可以将 left
和 top
变量用于您需要的任何目的。
关于c# - 如何在WPF中获取图像的正确位置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30795927/