我在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控件大小之间的某个比率,以命中确切的像素。但我不确定问题出在哪里。下面是当前的结果,从早上开始就让我痛苦不已。有人能帮我解决这个问题吗?

发布于 2016-07-16 01:52:06
基于这个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

https://stackoverflow.com/questions/38400410
复制相似问题