文档章节

Direct2D (30) : 判断几何对象的关系 - ID2D1Geometry.CompareWithGeometry()

涂孟超
 涂孟超
发布于 2014/09/26 15:36
字数 240
阅读 10
收藏 0
点赞 0
评论 0

{相关常量}
//D2D1_GEOMETRY_RELATION = type Integer;
D2D1_GEOMETRY_RELATION_UNKNOWN      = 0;  //未知
D2D1_GEOMETRY_RELATION_DISJOINT     = 1;  //不相交
D2D1_GEOMETRY_RELATION_IS_CONTAINED = 2;  //属于
D2D1_GEOMETRY_RELATION_CONTAINS     = 3;  //包含
D2D1_GEOMETRY_RELATION_OVERLAP      = 4;  //重叠


测试代码:

uses Direct2D, D2D1;

procedure TForm1.FormPaint(Sender: TObject);
const
  arr1: array[0..3] of string = ('红色', '黄色', '绿色', '蓝色');
  arr2: array[1..4] of string = ('不相交于', '属于', '包含', '相交于');
  arrColor: array[0..3] of TColor = (clRed, clYellow, clGreen, clBlue);
var
  cvs: TDirect2DCanvas;
  iEllipseGeometry: ID2D1EllipseGeometry;
  iRectangleGeometrys: array[0..3] of ID2D1RectangleGeometry;
  i,h: Integer;
  x: D2D1_GEOMETRY_RELATION;
  strArr: array[0..3] of string;
begin
  D2DFactory.CreateEllipseGeometry(D2D1Ellipse(D2D1PointF(150, 150), 50, 50), iEllipseGeometry);
  D2DFactory.CreateRectangleGeometry(D2D1RectF(90, 90, 210, 210), iRectangleGeometrys[0]);
  D2DFactory.CreateRectangleGeometry(D2D1RectF(130, 130, 170, 170), iRectangleGeometrys[1]);
  D2DFactory.CreateRectangleGeometry(D2D1RectF(70, 130, 110, 170), iRectangleGeometrys[2]);
  D2DFactory.CreateRectangleGeometry(D2D1RectF(220, 130, 260, 170), iRectangleGeometrys[3]);

  for i := 0 to 3 do
  begin
    iEllipseGeometry.CompareWithGeometry(iRectangleGeometrys[i], TD2DMatrix3x2F.Identity, 0, x);
    strArr[i] := Format('圆 "%s"'#9'%s矩形', [arr2[x], arr1[i]]);
  end;

  cvs := TDirect2DCanvas.Create(Canvas, ClientRect);
  cvs.BeginDraw;
  cvs.RenderTarget.Clear(D2D1ColorF(clWhite));

  for i := 0 to 3 do
  begin
    cvs.Brush.Color := arrColor[i];
    cvs.FillGeometry(iRectangleGeometrys[i]);
  end;

  cvs.Font.Size := 10;
  cvs.Brush.Color := clWhite;
  h := cvs.TextHeight(strArr[0]);
  for i := 0 to 3 do cvs.TextOut(8, h*i+5, strArr[i]);

  cvs.EndDraw;
  cvs.Free;
end;


效果图:



本文转载自:http://www.cnblogs.com/del/archive/2011/04/07/2008765.html

共有 人打赏支持
涂孟超
粉丝 12
博文 2004
码字总数 14107
作品 0
深圳
程序员
PostgreSQL+PostGIS 的使用

阅读目录 一、PostGIS中的几何类型 二、 PostGIS中空间信息处理的实现 三、 PostGIS中的常用函数 四、 PostGIS示例 回到顶部 一、PostGIS中的几何类型 PostGIS支持所有OGC规范的“Simple Fe...

技术mix呢 ⋅ 2017/11/07 ⋅ 0

postgis常用函数(99%转载 1%原创)

1,基本操作函数 AddGeometryColumn(<schemaname>, <tablename>, <columnname>, <srid>, <type>, <dimension>) 给一个已存在属性数据表增加一个几何字段(geomtry column)。schemaname 指表的模......

威武不能笑 ⋅ 2013/01/07 ⋅ 0

Direct2D教程(十)绘制文本

概述 在Direct2D中,文本的绘制是通过DirectWrite来实现的,DirectWrite实际上已经是一个独立的DirectX组件了。关于DirectWrite,我摘录了MSDN的一段文字。 DirectWrite介绍 当今的应用程序应...

吞吞吐吐的 ⋅ 2017/10/17 ⋅ 0

杂谈SharpDx中的WIC组件——我们需要WIC的图片编码功能么?

在前文 SharpDX之Direct2D教程II——加载位图文件和保存位图文件 中,发现在VB2010中不能很好的运用SharpDx中的WIC组件进行图片的编码工作。可能是我的设置问题,也可能是SharpDx对VB2010支持...

万仓一黍 ⋅ 2013/10/08 ⋅ 0

几何画板的对象元素

几何画板画出的各类对象可以运动,这是它之所以称为“动态几何”的原因。几何画板中的对象“动”的方法有3种,前面学习过一种是:拖动对象的某一部分(或一点、一线),使得由于各种几何关系...

学术研究软件 ⋅ 2016/04/05 ⋅ 0

对几何画板对象删除和拖动的方法

几何画板如果做一些复杂的图形还是有点难度的,但是如果对几何画板做一些基本的操作,那是很简单的。在几何画板中,对选中的对象可以进行的操作有:删除、拖动、构造、度量、变换等。本节教程...

学术研究软件 ⋅ 2016/07/08 ⋅ 0

数学老师必备的一款五星级几何绘图软件!

2016清明小长假刚刚过去,大家似乎还没从假期中走出来,课堂上学生们的那股爱学习的劲好像迟迟没有回归,在这里小编为大家送上一款专业的教学辅助工具,希望能够为老师们的教学增添色彩,提高...

学术研究软件 ⋅ 2016/04/06 ⋅ 0

MySQL中的空间扩展

目录 19.1. 前言 19.2. OpenGIS几何模型 19.2.1. Geometry类的层次 19.2.2. 类Geometry 19.2.3. 类Point 19.2.4. 类Curve 19.2.5. 类LineString 19.2.6. 类Surface 19.2.7. 类Polygon 19.2.......

云栖希望。 ⋅ 01/06 ⋅ 0

关于Direct3D11里汉字显示的一些思考

本系列文章由zhmxy555(毛星云)编写,转载请注明出处。 http://blog.csdn.net/zhmxy555/article/details/8147234 作者:毛星云 邮箱: happylifemxy@163.com 这篇文章里,浅墨希望与大家一起...

长平狐 ⋅ 2012/11/12 ⋅ 0

Direct2D教程(十一)几何变换

什么是几何变换(Transform) 在图形学中,主要有三种几何变换,分别是平移(Translate),旋转(Rotation)和缩放(Scaling)。在D2D中,这三种变换都有实现,而且还有一种不太常见的变换,...

吞吞吐吐的 ⋅ 2017/09/12 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

知乎Java数据结构

作者:匿名用户 链接:https://www.zhihu.com/question/35947829/answer/66113038 来源:知乎 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。 感觉知乎上嘲讽题主简...

颖伙虫 ⋅ 今天 ⋅ 0

Confluence 6 恢复一个站点有关使用站点导出为备份的说明

推荐使用生产备份策略。我们推荐你针对你的生产环境中使用的 Confluence 参考 Production Backup Strategy 页面中的内容进行备份和恢复(这个需要你备份你的数据库和 home 目录)。XML 导出备...

honeymose ⋅ 今天 ⋅ 0

JavaScript零基础入门——(九)JavaScript的函数

JavaScript零基础入门——(九)JavaScript的函数 欢迎回到我们的JavaScript零基础入门,上一节课我们了解了有关JS中数组的相关知识点,不知道大家有没有自己去敲一敲,消化一下?这一节课,...

JandenMa ⋅ 今天 ⋅ 0

火狐浏览器各版本下载及插件httprequest

各版本下载地址:http://ftp.mozilla.org/pub/mozilla.org//firefox/releases/ httprequest插件截至57版本可用

xiaoge2016 ⋅ 今天 ⋅ 0

Docker系列教程28-实战:使用Docker Compose运行ELK

原文:http://www.itmuch.com/docker/28-docker-compose-in-action-elk/,转载请说明出处。 ElasticSearch【存储】 Logtash【日志聚合器】 Kibana【界面】 答案: version: '2'services: ...

周立_ITMuch ⋅ 今天 ⋅ 0

使用快嘉sdkg极速搭建接口模拟系统

在具体项目研发过程中,一旦前后端双方约定好接口,前端和app同事就会希望后台同事可以尽快提供可供对接的接口方便调试,而对后台同事来说定好接口还仅是个开始、设计流程,实现业务逻辑,编...

fastjrun ⋅ 今天 ⋅ 0

PXE/KickStart 无人值守安装

导言 作为中小公司的运维,经常会遇到一些机械式的重复工作,例如:有时公司同时上线几十甚至上百台服务器,而且需要我们在短时间内完成系统安装。 常规的办法有什么? 光盘安装系统 ===> 一...

kangvcar ⋅ 昨天 ⋅ 0

使用Puppeteer撸一个爬虫

Puppeteer是什么 puppeteer是谷歌chrome团队官方开发的一个无界面(Headless)chrome工具。Chrome Headless将成为web应用自动化测试的行业标杆。所以我们很有必要来了解一下它。所谓的无头浏...

小草先森 ⋅ 昨天 ⋅ 0

Java Done Right

* 表示难度较大或理论性较强。 ** 表示难度更大或理论性更强。 【Java语言本身】 基础语法,面向对象,顺序编程,并发编程,网络编程,泛型,注解,lambda(Java8),module(Java9),var(...

风华神使 ⋅ 昨天 ⋅ 0

Linux系统日志

linux 系统日志 /var/log/messages /etc/logrotate.conf 日志切割配置文件 https://my.oschina.net/u/2000675/blog/908189 logrotate 使用详解 dmesg 命令 /var/log/dmesg 日志 last命令,调......

Linux学习笔记 ⋅ 昨天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部