资料来自
http://developer.51cto.com/art/200908/146258.htm和http://blog.sina.com.cn/s/blog_5d5c80840101bnhw.html
进行了参考和修改,更符合项目的需求
代码如下
// 判断点在多边形边框上,或者在某个线段上
private bool OnRegion(PointF[] ps, PointF p)
{
if (ps == null || ps.Length <2) return false;
if (ps.Length == 2)
{
return OnLine(ps[0], ps[1], p, LineWidth + 1);
}
for(int i = 0; i<ps.Length; i++)
{
if (i < ps.Length-1)
{
if (OnLine(ps[i], ps[i+1], p, LineWidth + 1))
return true;
}
else if (i == ps.Length-1)
{
if (OnLine(ps[0], ps[i], p, LineWidth + 1))
return