2016-07-15 229 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