C# GDI+ 利用 Rectangle GraphicsPath 判断 矩形或多边形 图形关系
最近在做一些简单的图像对比工作,总结了一些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 判断 矩形或多边形 图形关系的更多相关文章
- Broken line - SGU 124(判断点与多边形的关系)
题目大意:RT 分析:构造一条射线,如果穿越偶数条边,那么就在多边形外面,如果穿越奇数条边,那么就在多边形里面. 代码如下: ===================================== ...
- Unity3D 中判断点与多边形的关系
由点发出的射线与多边形边的交点个数,如果是偶数个说明在多边形的外面,交点个数为奇数个在多边形的内部,下面是代码: public bool IsPointInPolygon(Vector2 point, ...
- A Round Peg in a Ground Hole(判断是否是凸包,点是否在凸包内,圆与多边形的关系)
Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 4628 Accepted: 1434 Description The D ...
- java利用反射机制判断对象的属性是否为空以及获取和设置该属性的值
1.java利用反射机制判断对象的属性是否为空: Map<String,String> validateMap = new LinkedHashMap<String, String& ...
- shell编程 条件判断式----利用 case ..... esac 判断
条件判断式----利用 case ..... esac 判断 case $变量名称 in <==关键词为 case ,还有变量前有钱字号 "第一个变量内容") &l ...
- Android利用canvas画各种图形(点、直线、弧、圆、椭圆、文字、矩形、多边形、曲线、圆角矩形) .
1.首先说一下canvas类: Class Overview The Canvas class holds the "draw" calls. To draw something, ...
- R树判断点在多边形内-Java版本
1.什么是RTree 待补充 2.RTree java依赖 rtree的java开源版本在GitHub上:https://github.com/davidmoten/rtree 上面有详细的使用说明 ...
- 判断点在多边形内算法的C++实现
目录 1. 算法思路 2. 具体实现 3. 改进空间 1. 算法思路 判断平面内点是否在多边形内有多种算法,其中射线法是其中比较好理解的一种,而且能够支持凹多边形的情况.该算法的思路很简单,就是从目标 ...
- POJ 2318 TOYS | 二分+判断点在多边形内
题意: 给一个矩形的区域(左上角为(x1,y1) 右下角为(x2,y2)),给出n对(u,v)表示(u,y1) 和 (v,y2)构成线段将矩形切割 这样构成了n+1个多边形,再给出m个点,问每个多边形 ...
随机推荐
- Oracle 常用语句备份
1.oracle 11g 用户名和密码默认区分大小写,可更改alter system set sec_case_sensitive_logon=false 设置改为不区分大小写. 2.授权创建视图:G ...
- iOS开发ApplePay的介绍与实现
1.Apple Pay的介绍 Apple Pay官方 1.1 Apple Pay概念 Apple Pay,简单来说, 就是一种移动支付方式.通过Touch ID/ Passcode,用户可使用存储在i ...
- 在vue中import()语法不能传入变量
解决办法: 一定要用变量的时候,可以通过字符串模板来提供部分信息给webpack:例如import(`./path/${myFile}`), 这样编译时会编译所有./path下的模块,但运行时确定my ...
- [Android]Caused by: java.lang.IllegalArgumentException: Service not registered.md
Caused by: java.lang.IllegalArgumentException: Service not registered: org.diql.aidldemo.MainActivit ...
- ios UITableView 异步加载图片并防止错位
UITableView 重用 UITableViewCell 并异步加载图片时会出现图片错乱的情况 对错位原因不明白的同学请参考我的另外一篇随笔:http://www.cnblogs.com/lesl ...
- GraphQL 总结 + 在Django应用(Graphene)
由Xmind编辑,下次更新会附加python demo. 附件列表
- IdentityServer4授权模式应用场景
OpenID 和 OAuth 的区别 IdentityServer4,NET Core下的安全框架 客户端模式(Client Credentials) 密码模式(resource owner pass ...
- Android和kernel杂散点集合
Android: 1.编译 普通的编译: 1). source build/envsetup.sh 2).lunch 3).make -jx make kernel:只重新编译kernel部分镜像,但 ...
- jQuery ajax async
jQuery 同步调用: jQuery.ajax({ type:'POST', async: false, url:'qcTask/add', contentType:'application/jso ...
- sql 表插锁 解锁
--查锁 select request_session_id spid,OBJECT_NAME(resource_associated_entity_id) tableName from sys.dm ...