2016-07-15 230 views
1

我在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控件大小之间的某个比率以达到确切的像素。但我不确定是什么问题。下面是目前的结果,这是自上午以来,我正在杀死我。有人能帮我解决吗?

enter image description here

回答

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