http://kenchell.blog.163.com/blog/static/2608830920101011114328357/
这是网上的一篇现有的帖子,用射线法根据交点的个数判断点是否在多边形内
之前还看到过一篇文章,也是用射线法,它是返回三个数值1,0,-1(大体意思)
代表是在多边形内部,在多边形边界上,在多边形外部。
判断点是否在多边形内部,网上介绍的大体有射线法,面积法,角度和法等
微软其实已经给我们实现了一个方法判断点是否在多边形内那就是IsVisable方法- <blockquote>using (Graphics ddd = this.picbox1.CreateGraphics())
复制代码 GraphicsPath myPath12 = new GraphicsPath(); myPath12.AddPolygon(point121); Region myregion12 = new Region(myPath12); bool ature = myregion12.IsVisible(pnt);
}
实例化一个“GraphicsPath ”类,然后调用它的IsVisable方法传入所要判断的点,如果在多边形内部则返回true否则false
不过也有一个缺憾就是不能完成在边界上的判断。
估计IsVisable也是用的射线法进行判断的,这个效率会比较高
如果谁写出来了,请不吝分享啊{:soso_e113:}先谢过了
|