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

标签 c# wpf

我是 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.GetLeftCanvas.GetTop方法。这是一个例子:

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

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

关于c# - 如何在WPF中获取图像的正确位置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30795927/

相关文章:

wpf - 使用 FSharp.ViewModule 关闭对话框

c# - 如何在 WPF 的 DataGridTextColumn 中格式化工具提示的字符串

c# - 遍历字母表 - C# a-caz

c# - 如何按照 TDD 方法更新 EF Core 2.0 拥有的实体?

c# - 检测显示器数量

WPF DataGridComboBoxColumn 按键时编辑

c# - 访问基本成员时未调用子静态构造函数

c# - 创建动态 div 标签并将数据放入该 div 标签中,数据是从数据库中获取的

c# - 不显示堆栈跟踪的 wcf 异常

c# - WPF 应用程序(不是浏览器)和导航