多边形图

本文关键字:多边形 | 更新日期: 2023-09-27 17:49:33

我希望用户使用鼠标定义一个多边形,然后单击鼠标定义点。第二个任务是,一旦我有了一组已定义的多边形,我想检查是否有一些随机生成的点位于这些多边形内。

我在c# .net平台工作。谢谢。

多边形图

这不是一项简单的任务。例如,你应该分析和排序点的集合为凸或凹船体。您可以使用以下链接作为资源:

http://ubicomp.algoritmi.uminho.pt/local/concavehull.html

http://marknelson.us/2007/08/22/convex/

是否有一种有效的算法来生成二维凹船体?

http://courses.csail.mit.edu/6.854/06/scribe/s26-randomIC.pdf

http://softsurfer.com/Archive/algorithm_0109/algorithm_0109.htm

旧线程,但直接解决方案。如果你充分利用Graphics和Drawing2D名称空间,这实际上是非常简单的。

GraphicsPath。AddLines(Point[])

图形。DrawPath (Drawing2D。GraphicsPath)

图形。FillPath (Drawing2D。GraphicsPath)

GraphcisPath。CloseFigure ()

因此,您只需创建一个新路径,然后调用AddLines传递您的点数组,然后调用CloseFigure。

如果你想用笔描边,使用DrawPath。如果你想用画笔填充,使用FillPath。

对多边形内的任何点进行命中测试也很简单,您可以使用绘图。地区(Drawing2D。GraphicsPath)和任何区域的重载。