我是图形方面的新手。我有一个面板,我用它来绘制一些点。现在我将单击面板中的任意位置,我需要找到最接近单击点的点。这是找到它的最佳方法。有人可以帮助我吗。
@Yahia 其实我已经创建了一些看起来像的点
. . . .
. . . .
. . . .
现在我将在这些点之间单击,我需要找到离我单击的位置最近的点并将其涂上不同的颜色。
我使用的代码是
PlotterMap = new Bitmap(this.pnlPlotterMap.Width, this.pnlPlotterMap.Height,
System.Drawing.Imaging.PixelFormat.Format24bppRgb);
BufferGraphics = Graphics.FromImage(PlotterMap);
BufferGraphics.FillEllipse(brush, plcolplot.XPixel1, plcolplot.YPixel1,2,2);
数学方法是计算距离。
它仍然比做圆圈的蛮力方法快得多
您可以结合 LINQ 使用向量(从 3.5 开始存在于 .net 中):
Point mousePos = new Point();
List<Point> points = new List<Point>();
var closest = (from Point p in points
select new {
Vector = (mousePos - p),
Point = p }
).OrderBy(a => a.Vector.Length).FirstOrDefault();
if (closest != null)
{
double distance = closest.Vector.Length;
Point closesPoint = closest.Point;
}
我是一名优秀的程序员,十分优秀!