最近在做一些简单的图像对比工作,总结了一些GDI+对象的使用方式,记录下来共享给大家使用。

判断Rectangl与多边形的关系

  /// <summary>
/// 是否包含输入范围
/// </summary>
/// <param name="rectangle">要对比的范围</param>
/// <param name="scale">当前模型对比比例,如放大一倍、缩小一倍等,默认是1</param>
/// <returns></returns>
public bool Contains(Rectangle rectangle, double scale)
{
try
{//按照比例缩放当前模型范围
var ys = PtsYArray;
var xs = PtsXArray; var gp = new GraphicsPath();
gp.StartFigure();
for (int i = ; i < ys.Length; i++)
{
//当前点和下一点不为空
if (!string.IsNullOrEmpty(ys[i]) && !string.IsNullOrEmpty(xs[i]) && !string.IsNullOrEmpty(ys[i+]) && !string.IsNullOrEmpty(xs[i+]))
{ gp.AddLine((int)(int.Parse(xs[i]) * scale), (int)(int.Parse(ys[i]) * scale), (int)(int.Parse(xs[i + ]) * scale),
(int)(int.Parse(ys[i + ]) * scale));
}
else
{
gp.CloseFigure();
break;
}
}
var rg = new Region(gp);
return rg.IsVisible(rectangle);
}
catch
{
return false;
}
}

判断Rectangl与Rectangl的关系

  /// <summary>
/// 是否包含输入范围
/// </summary>
/// <param name="rectangle">要对比的范围</param>
/// <param name="scale">当前模型对比比例,如放大一倍、缩小一倍等,默认是1</param>
/// <returns></returns>
public bool Contains(Rectangle rectangle, double scale)
{
try
{//按照比例缩放当前模型范围
var rectangle2 = new Rectangle((int) (int.Parse(X)*scale), (int) (int.Parse(Y)*scale),
(int) (int.Parse(xR)*scale), (int) (int.Parse(yR)*scale));
return rectangle.IntersectsWith(rectangle2);//对比两个最大外包是否有包含关系
}
catch
{
return false;
}
}

希望对大家有用:)

C# GDI+ 利用 Rectangle GraphicsPath 判断 矩形或多边形 图形关系的更多相关文章

  1. Broken line - SGU 124(判断点与多边形的关系)

    题目大意:RT 分析:构造一条射线,如果穿越偶数条边,那么就在多边形外面,如果穿越奇数条边,那么就在多边形里面. 代码如下: ===================================== ...

  2. Unity3D 中判断点与多边形的关系

    由点发出的射线与多边形边的交点个数,如果是偶数个说明在多边形的外面,交点个数为奇数个在多边形的内部,下面是代码: public bool IsPointInPolygon(Vector2 point, ...

  3. A Round Peg in a Ground Hole(判断是否是凸包,点是否在凸包内,圆与多边形的关系)

    Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 4628   Accepted: 1434 Description The D ...

  4. java利用反射机制判断对象的属性是否为空以及获取和设置该属性的值

    1.java利用反射机制判断对象的属性是否为空: Map<String,String> validateMap = new LinkedHashMap<String, String& ...

  5. shell编程 条件判断式----利用 case ..... esac 判断

    条件判断式----利用 case ..... esac 判断 case  $变量名称 in   <==关键词为 case ,还有变量前有钱字号 "第一个变量内容")   &l ...

  6. Android利用canvas画各种图形(点、直线、弧、圆、椭圆、文字、矩形、多边形、曲线、圆角矩形) .

    1.首先说一下canvas类: Class Overview The Canvas class holds the "draw" calls. To draw something, ...

  7. R树判断点在多边形内-Java版本

    1.什么是RTree 待补充 2.RTree java依赖 rtree的java开源版本在GitHub上:https://github.com/davidmoten/rtree 上面有详细的使用说明 ...

  8. 判断点在多边形内算法的C++实现

    目录 1. 算法思路 2. 具体实现 3. 改进空间 1. 算法思路 判断平面内点是否在多边形内有多种算法,其中射线法是其中比较好理解的一种,而且能够支持凹多边形的情况.该算法的思路很简单,就是从目标 ...

  9. POJ 2318 TOYS | 二分+判断点在多边形内

    题意: 给一个矩形的区域(左上角为(x1,y1) 右下角为(x2,y2)),给出n对(u,v)表示(u,y1) 和 (v,y2)构成线段将矩形切割 这样构成了n+1个多边形,再给出m个点,问每个多边形 ...

随机推荐

  1. C++模(mú )板秘籍

    秘籍?想看我的秘籍?在硬盘上呢.就不给你看!

  2. 关于cg语言中求法向量 N=mul(worldMatrix_IT,normal); 的随笔

    解释一下标题,N是变换到世界坐标后的法向量,worldMatrix_IT是变换矩阵worldMatrix的逆的转置矩阵,normal就是模型坐标的法向量. 对于点p,我们根据变换矩阵M(即worldM ...

  3. 《大数据日知录》读书笔记-ch15机器学习:范型与架构

    机器学习算法特点:迭代运算 损失函数最小化训练过程中,在巨大参数空间中迭代寻找最优解 比如:主题模型.回归.矩阵分解.SVM.深度学习 分布式机器学习的挑战: - 网络通信效率 - 不同节点执行速度不 ...

  4. AngularJs学习笔记--Injecting Services Into Controllers

    原版地址:http://docs.angularjs.org/guide/dev_guide.services.injecting_controllers 把service当作被依赖的资源加载到con ...

  5. JavaScript HTML DOM学习记录

    HTML DOM (文档对象模型) 当网页被加载时,浏览器会创建页面的文档对象模型(Document Object Model). HTML DOM 模型被构造为对象的树. HTML DOM 树 通过 ...

  6. lua默认是double类型

    把c#的float类型传给lua  ,lua自己换转成double ,一转就出精度问题 lua只有double没有float ===================================== ...

  7. java ee的map

  8. linux diff(differential) 命令

    功能说明:比较文件的差异. 语法:diff [OPTION]... FILES 实例: diff -ur temp1 temp2 diff -ur temp1 temp2 > temp.diff ...

  9. 持续集成:TeamCity 的安装和使用

    TeamCity 本文初衷 让大家了解持续集成(CI),以及入门了解 JetBrains 家的 TeamCity 的一些简单实用. TeamCity 的一些复杂使用我暂时也不会,一样也是要看文档的,所 ...

  10. Freemarker list的使用

    更新多条记录的操作,这里ids是一个数组 <sqltemplate id = "disableBuildLabourer"> <![CDATA[ UPDATE b ...