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