Caliburn.Micro 点击事件查找图像点并计算距离

Posted

技术标签:

【中文标题】Caliburn.Micro 点击事件查找图像点并计算距离【英文标题】:Caliburn.Micro Click Event To find Image Point and calculate Distance 【发布时间】:2020-12-30 17:44:25 【问题描述】:

您好,我在寻找图像点时遇到问题。我的目标是当我单击两点时,我必须找到两点之间的距离。这是我的代码

<ImageGrid.Row="3" Grid.Column="2" Grid.ColumnSpan="4" x:Name="DIIMG2" cal:Message.Attach="[Event MouseDown]=[Action GetImagePoint($eventArgs)]"></Image>

在这里你可以看到我使用了 MouseDown 事件,当事件触发时我不能使用 X,Y 坐标来获取点值例如下面的代码

 public void GetImagePoint(object sender, MouseEventArgs e)
    
        int myX = e.X;
        int myY = e.Y;

    

我遇到编译错误,例如“MouseEventArgs”不包含“X”的定义,并且找不到接受“MouseEventArgs”类型的第一个参数的可访问扩展方法“X”(您是否缺少 using 指令或程序集参考?) 。如何克服这一点。我需要找到 X 和 Y 值表示坐标值。提前致谢。

【问题讨论】:

【参考方案1】:

在您的 WPF 中,您定义了 2 个参数 GetImagePoint($source, $eventArgs)

在你的函数中访问 (X,Y),你使用 GetPosition 方法:

    public void GetImagePoint(object sender, System.Windows.Input.MouseEventArgs e)
    
        if (!(sender is System.Windows.Controls.Image)) return;
        System.Windows.Point px = e.GetPosition((System.Windows.Controls.Image)sender);
        int myX = (int)px.X;
        int myY = (int)px.Y;
    

我建议你检查鼠标是否点击图像:

【讨论】:

不,还没有解决。我无法访问 int myX = e.X; ... e.X 无法访问 你必须使用GetPosition方法..看我的固定答案 感谢您的回复。我认为命名空间将是 System.Drawing.Image 在这一行中(System.Drawing.Point px = e.GetPosition((System.Drawing.Image)sender);)我得到这个编译时错误无法将 System.Drawing.Image 转换为 System.Windows.InputElement 对我来说图像的命名空间是System.Windows.Controls。和System.Windows for Point.. 但是如果没有关于您正在加载的图像的完整程序,很难正确回答 我正在从 BitmapImage 加载图像 谢谢我正在尝试

以上是关于Caliburn.Micro 点击事件查找图像点并计算距离的主要内容,如果未能解决你的问题,请参考以下文章

Caliburn.Micro学习笔记----Actions

Caliburn Micro 'Enter' 关键事件

MVVM框架 -- Caliburn.Micro 系列文章

WPF Caliburn Micro TreeView HierarchicalDataTemplate 节点扩展事件

C# WPF MVVM模式Caliburn.Micro框架下事件发布与订阅

Caliburn.Micro学习笔记目录——li-peng