【问题标题】:How to get the position of a Coordinate with respect to Mouse position?如何获取坐标相对于鼠标位置的位置?
【发布时间】:2016-07-15 15:54:38
【问题描述】:

我在 Wpf 上,我有一个坐标列表,我在位图图像上绘制它们。我的位图文件是1000 * 1000,它被填充到680 * 440 图像控件中。现在我要完成的是突出显示鼠标光标附近的坐标,当鼠标悬停在我的图像上时。

在MouseMove() 事件处理程序上,我调用此函数并将鼠标相对于图像控件的位置传递给它:

public void HighLightNearbyDots(Point MousePosition)
{
    int Distance;
    CoordPoint temp = new CoordPoint();
    temp.X = MousePosition.X;
    temp.Y = MousePosition.Y;

    foreach (var point in myDisplayedCoords)
    {
        Distance = (int)(temp - point); // using subtraction operator that I wrote

        if (Distance < 10)
        {
            point.Color = Colors.Blue;
        }
        else
        {
            point.Color = InitialCoordColor; // Aqua
        }
    }

    DrawImage();
}

是的,我在每次通话时都会重新绘制图像以反映更改。也许问题是我需要缩放或计算1000 * 1000 文件大小和680 * 440 控件大小之间的某个比率以达到精确的像素。但我不确定是什么问题。以下是从早上开始就让我丧命的当前结果。谁能帮我解决这个问题?

【问题讨论】:

    标签: c# wpf logic coordinates


    【解决方案1】:

    基于此How to scale a coordinate system? 现在我们知道了方程式。然后我这样用:

    int Distance;
    CoordPoint temp = new CoordPoint();
    temp.X = MousePosition.X / 660 * Bitmap.Width;
    temp.Y = Bitmap.Height - (MousePosition.Y / 440 * Bitmap.Height); // y is flipped
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-02-15
      • 2014-09-05
      • 1970-01-01
      相关资源
      最近更新 更多