首页 新闻 会员 周边 捐助

C# GDI图形问题!

0
[已关闭问题]

大家好!!我是一新手!!请大家多多关照!

我在窗体上画了一个多边形,想确定在鼠标点击窗体的时候,鼠标点击的那点是否在所画的多边形内,这个要怎么做啊!!请大家多多帮忙!!

 Graphics g = this.CreateGraphics();
            Pen p = new Pen(Color.Red);
            Point p1 = new Point(5,285);
            Point p2 = new Point(269,183);
            Point p3 = new Point(398,292);
            Point p4 = new Point(815,362);
            Point p5 = new Point(814,578);
            Point p6 = new Point(261,578);
            Point p7 = new Point(2,404);
            Point[] pa ={ p1, p2, p3, p4, p5, p6, p7 };
            g.DrawPolygon(p,pa);

╄→貪玩の惢的主页 ╄→貪玩の惢 | 初学一级 | 园豆:0
提问于:2009-04-15 17:33
< >
分享
其他回答(2)
0

你要计算出这个多边形的 占据的范围的所有点的位置集合、放在一个hs表里面、然后在鼠标点击的时候、取到鼠标的点击位置、hs表中一查。就可以得到是否在这个图形内。

但是有个问题、就是你要得到这个多边形的点的位置结合、或者说、是一个算法规则、

麻烦点、但是不难。本来你的多边形就是用几个点确定的。你可以跟据点得到、算法变现的点集合。

然后比较。ok

邢少 | 园豆:10926 (专家六级) | 2009-04-16 11:19
0

MeasureCharacterRanges 获取说有Regions 遍历Region ,判定坐标是否在Region 中即可。

winzheng | 园豆:8797 (大侠五级) | 2009-04-16 12:21
0

有一个变通的方法

你可以将所有点顺时针或逆时针排列后,取得鼠标的当前Position坐标(x,y)

看顺序取两点和(x,y)求三点面积

所有面积之和和多边形面积做比较

如果相同就在多边形内或多边形边上

如果大于多边形面积就不在多边形内

这种方法有点繁琐不过适用凹凸多边形,且任意多边都行

花生1 | 园豆:872 (小虾三级) | 2009-04-29 23:59
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册