【问题标题】:WPF C# wrong mouse coordinatesWPF C#错误的鼠标坐标
【发布时间】:2020-06-30 23:05:55
【问题描述】:

所以我试图通过单击图像来获取鼠标坐标,但它给出了错误的坐标。当我移动鼠标进行绘制时,线条会远离光标。 这是我用来获取鼠标坐标的代码:

    private void ponaredek_MouseDown(object sender, MouseButtonEventArgs e)
    {
        mouseDown = true;
        //x1 = System.Windows.Forms.Control.MousePosition;
        x1 = new System.Drawing.Point((int)e.GetPosition(this).X, (int)e.GetPosition(this).Y);
    }

x1 是 System.Drawing.Point 类型(我需要绘图中的点,以便在 emgucv 中使用)。我该怎么做才能更正光标位置(我画了光标所在的位置)

【问题讨论】:

  • 捕获MouseDown 事件的元素类型是什么?了解您的 XAML 会有所帮助。
  • 你的屏幕缩放了吗?
  • @Jeff yes, WindowState="Maximized" ResizeMode="NoResize" Height="1080" Width="1920" 我设置了高度和宽度,以便更好地编辑
  • @Keithernet 它在一个图像元素上
  • 我不确定我的问题是否清楚。您是否在“设置”>“显示”>“缩放和布局”中为显示器设置了比例因子?

标签: c# wpf opencv emgucv


【解决方案1】:

您想要获取相对于 Image 元素而不是 Window 的鼠标位置。所以替换

e.GetPosition(this)

e.GetPosition((IInputElement)sender)

e.GetPosition(ponaredek)

如果那是 Image 元素。

应该是这样的:

var pos = e.GetPosition((IInputElement)sender);
x1 = new System.Drawing.Point(pos.X, pos.Y);

还要确保 Image 元素的 Stretch 属性设置为 None

【讨论】:

  • 它仍然不在正确的位置,但离光标更近了一点
  • 还要确保 Image 元素的 Stretch 属性设置为 None。如果图像被拉伸,则必须考虑拉伸比率。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-03-13
  • 2020-05-15
  • 2013-04-30
  • 1970-01-01
  • 2013-06-29
  • 1970-01-01
相关资源
最近更新 更多