大家好!!我是一新手!!请大家多多关照!
我在窗体上画了一个多边形,想确定在鼠标点击窗体的时候,鼠标点击的那点是否在所画的多边形内,这个要怎么做啊!!请大家多多帮忙!!
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);
你要计算出这个多边形的 占据的范围的所有点的位置集合、放在一个hs表里面、然后在鼠标点击的时候、取到鼠标的点击位置、hs表中一查。就可以得到是否在这个图形内。
但是有个问题、就是你要得到这个多边形的点的位置结合、或者说、是一个算法规则、
麻烦点、但是不难。本来你的多边形就是用几个点确定的。你可以跟据点得到、算法变现的点集合。
然后比较。ok
MeasureCharacterRanges 获取说有Regions 遍历Region ,判定坐标是否在Region 中即可。
有一个变通的方法
你可以将所有点顺时针或逆时针排列后,取得鼠标的当前Position坐标(x,y)
看顺序取两点和(x,y)求三点面积
所有面积之和和多边形面积做比较
如果相同就在多边形内或多边形边上
如果大于多边形面积就不在多边形内
这种方法有点繁琐不过适用凹凸多边形,且任意多边都行