我是Windows Presentation Foundation的初学者 我有一个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
中输入相同的值答案 0 :(得分:1)
使用e.GetPosition
,这会将鼠标指针 relative 的位置设置为所单击的元素,而不是该元素所属的画布。
要在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
变量用于您需要的任何目的。
答案 1 :(得分:1)
最后,我通过谷歌搜索得到了一个小时的答案.....
Point currentMousePosition = Mouse.GetPosition(Application.Current.MainWindow);