如何在WPF中获取图像的正确位置?

时间:2015-06-12 05:35:31

标签: c# wpf

我是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

中输入相同的值

2 个答案:

答案 0 :(得分:1)

使用e.GetPosition,这会将鼠标指针 relative 的位置设置为所单击的元素,而不是该元素所属的画布。

要在Canvas上获取图片的实际位置,您需要使用Canvas.GetLeftCanvas.GetTop方法。这是一个例子:

private void objImageMouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
    double left = Canvas.GetLeft((UIElement)sender);
    double top = Canvas.GetTop((UIElement)sender);
}

然后,您可以将lefttop变量用于您需要的任何目的。

答案 1 :(得分:1)

最后,我通过谷歌搜索得到了一个小时的答案.....

  Point currentMousePosition = Mouse.GetPosition(Application.Current.MainWindow);