如何获得与鼠标位置相关的坐标位置?

时间:2016-07-15 15:54:38

标签: c# wpf logic coordinates

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

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

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控件大小之间的某个比例以达到确切像素。但我不确定是什么问题。以下是自上午以来杀死我的当前结果。任何人都可以帮我解决这个问题吗?

enter image description here

1 个答案:

答案 0 :(得分:0)

基于此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

enter image description here