A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 汪振 中级黑马   /  2013-3-2 16:43  /  5721 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

http://kenchell.blog.163.com/blog/static/2608830920101011114328357/
这是网上的一篇现有的帖子,用射线法根据交点的个数判断点是否在多边形内

之前还看到过一篇文章,也是用射线法,它是返回三个数值1,0,-1(大体意思)
代表是在多边形内部,在多边形边界上,在多边形外部。
判断点是否在多边形内部,网上介绍的大体有射线法,面积法,角度和法等

微软其实已经给我们实现了一个方法判断点是否在多边形内那就是IsVisable方法
  1. <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:}先谢过了

评分

参与人数 1技术分 +1 收起 理由
张文 + 1

查看全部评分

1 个回复

倒序浏览
值得学习ing!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马