文档章节

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

涂孟超
 涂孟超
发布于 2014/09/26 15:36
字数 240
阅读 10
收藏 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
博文 2011
码字总数 14107
作品 0
深圳
程序员
PostgreSQL+PostGIS 的使用

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

技术mix呢
2017/11/07
0
0
postgis常用函数(99%转载 1%原创)

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

威武不能笑
2013/01/07
0
0
Direct2D教程(十)绘制文本

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

吞吞吐吐的
2017/10/17
0
0
杂谈SharpDx中的WIC组件——我们需要WIC的图片编码功能么?

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

万仓一黍
2013/10/08
0
0
几何画板的对象元素

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

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

没有更多内容

加载失败,请刷新页面

加载更多

下一页

八大包装类型的equals方法

先看其中一个源码 结论:八大包装类型的equals方法都是先判断类型是否相同,不相同则是false,相同则判断值是否相等 注意:包装类型不能直接用==来等值比较,否则编译报错,但是数值的基本类型...

xuklc
36分钟前
1
0
NoSQL , Memcached介绍

什么是NoSQL 非关系型数据库就是NoSQL,关系型数据库代表MySQL 对于关系型数据库来说,是需要把数据存储到库、表、行、字段里,查询的时候根据条件一行一行地去匹配,当量非常大的时候就很耗...

TaoXu
昨天
0
0
890. Find and Replace Pattern - LeetCode

Question 890. Find and Replace Pattern Solution 题目大意:从字符串数组中找到类型匹配的如xyy,xxx 思路: 举例:words = ["abc","deq","mee","aqq","dkd","ccc"], pattern = "abb"abc ......

yysue
昨天
0
0
Linux | Redis

写在前面的话 常言道,不作笔记不读书。在下是深有体会啊,所以,跟我一起做下本节的笔记吧,或许多年以后,你一定会感谢今天的你。 安装 在官网的下载页 Redis Download 直接写了在Linux的安...

冯文议
昨天
1
0
NoSQL-memcached

NoSQL介绍 NoSQL叫非关系型数据库。而关系型数据库代表有MySQL。对于关系型数据库来说,是需要把数据存储到库、表、行、字段里,查询的时候根据条件一行一行地去匹配,当量非常大的时候就很...

ln97
昨天
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部