c# - 如何从另一个点知道相邻点

标签 c# graphics

我是图形方面的新手。我有一个面板,我用它来绘制一些点。现在我将单击面板中的任意位置,我需要找到最接近单击点的点。这是找到它的最佳方法。有人可以帮助我吗。

@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;
}

关于c# - 如何从另一个点知道相邻点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8354739/

相关文章:

C# - 网站 - SQL Select 语句

c# - 如何配置 ToolStripDropdownbutton 大小以匹配父下拉按钮的大小?

C# 如何判断 DVD 驱动器托盘是否打开?

c++ - 没有 OpenGL 的 Linux 基本图形编程

java - 如何找到三个平面的交点?

c# - Func 在选择器类型之间的 AutoMapper

c# - 在 C# 中从 Windows 服务捕获关键事件

java - 使用浮点/ double 值制作椭圆形/矩形

java - 将鼠标单击时的图像添加到 JPanel

java - 在 JPanel 内绘画