如何知道GraphicsPath是否包含C#中的一个点
我正在使用.NET绘制图表,我想在用户点击它们时突出显示对象。 当图形完全包含在矩形中时很容易:
if (figure.Bounds.Contains(p)) // bounds is a rectangle
但如果图形是一个复杂的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); }