如何知道GraphicsPath是否包含C#中的一个点

我正在使用.NET绘制图表,我想在用户点击它们时突出显示对象。 当图形完全包含在矩形中时很容易:

if (figure.Bounds.Contains(p)) // bounds is a rectangle 

但如果图形是一个复杂的GraphicsPath我不知道如何管理它。

我为图(绿色圆圈)定义了以下GraphicsPath

的GraphicsPath

我想在用户点击它时突出显示该图。 我想知道一个Point是否包含在该GraphicsPath

有任何想法吗? 提前致谢。

我不知道DrawingPath (你的意思是; graphics.DrawPath)但是GraphicsPath有IsVisible方法来检查一个点是否在路径中。

 bool isInPath = graphicsObj.IsVisible(point) 

对于这个矩形示例,同时使用.IsOutlineVisible和.IsVisible一起覆盖整个事物,边界和边界内,但是正如您所知,GraphicsPath可以适用于不同的形状。

  bool b = gp.IsVisible(point) || gp.IsOutlineVisible(point, pen); 

在代码中

  Rectangle r = new Rectangle(new Point(50, 100), new Size(500, 100)); bool b; // say Point p is set. // say Pen pen is set. using (var gp = new GraphicsPath()) using (var pen = new Pen(Color.Black, 44)) { gp.AddRectangle(r); bool b = gp.IsVisible(point) || gp.IsOutlineVisible(point, pen); }