文档章节

Direct2D (22) : 复合几何对象之 ID2D1TransformedGeometry

涂孟超
 涂孟超
发布于 2014/09/26 15:35
字数 150
阅读 11
收藏 0

复合几何对象包括 ID2D1GeometryGroup 和 ID2D1TransformedGeometry,它们都继承自 ID2D1Geometry。

ID2D1TransformedGeometry 只是包含了 2D 变换的 ID2D1Geometry。


uses Direct2D, D2D1;

procedure TForm1.FormPaint(Sender: TObject);
var
  cvs: TDirect2DCanvas;
  iTransformedGeometry: ID2D1TransformedGeometry;
  iRectangleGeometry: ID2D1RectangleGeometry;
  iGeometry: ID2D1Geometry;
  R: TRect;
begin
  {建立一个矩形的 ID2D1Geometry}
  R := Bounds((ClientWidth-100) div 2, (ClientHeight-100) div 2, 100, 100);
  D2DFactory.CreateRectangleGeometry(R, iRectangleGeometry);

  {建立 ID2D1TransformedGeometry}
  D2DFactory.CreateTransformedGeometry(
    iRectangleGeometry,
    TD2DMatrix3x2F.Rotation(45, ClientWidth/2, ClientHeight/2),
    iTransformedGeometry
  );

  cvs := TDirect2DCanvas.Create(Canvas, ClientRect);
  cvs.BeginDraw;

  {绘制原始矩形}
  cvs.Pen.Color := clGreen;
  cvs.Pen.Width := 11;
  cvs.DrawGeometry(iRectangleGeometry);

  {绘制 ID2D1TransformedGeometry}
  cvs.Brush.Color := clGreen;
  cvs.FillGeometry(iTransformedGeometry);

  {绘制从 ID2D1TransformedGeometry 再次获取的 iGeometry}
  cvs.Pen.Color := clWhite;
  cvs.Pen.Width := 1;
  iTransformedGeometry.GetSourceGeometry(iGeometry);
  cvs.DrawGeometry(iGeometry);

  cvs.EndDraw;
  cvs.Free;
end;

procedure TForm1.FormResize(Sender: TObject);
begin
  Repaint;
end;


效果图:



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

共有 人打赏支持
涂孟超
粉丝 12
博文 2011
码字总数 14107
作品 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
Direct2D教程(十一)几何变换

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

吞吞吐吐的
2017/09/12
0
0
怎么用几何画板画三星状图形

大家都知道几何画板的功能非常的强大,很多的复杂图形都可以用几何画板来绘制。对于一些几何画板初学者来说,肯定知道如何使用几何画板画圆。相对圆而言,画弧比较复杂,特别是构造由几个圆相...

学术研究软件
2016/07/05
30
0
Direct2D教程(十二)图层

什么是Layers? Layer,中文译成图层,在Direct2D中可以用来完成一些特殊效果,使用Layer的时候,先将Layer Push到render target,然后进行绘制,此时是直接绘制在Layer上的,绘制完毕后,将...

吞吞吐吐的
2017/10/26
0
0

没有更多内容

加载失败,请刷新页面

加载更多

20180920 rzsz传输文件、用户和用户组相关配置文件与管理

利用rz、sz实现Linux与Windows互传文件 [root@centos01 ~]# yum install -y lrzsz # 安装工具sz test.txt # 弹出对话框,传递到选择的路径下rz # 回车后,会从对话框中选择对应的文件传递...

野雪球
33分钟前
0
0
OSChina 周四乱弹 —— 毒蛇当辣条

Osc乱弹歌单(2018)请戳(这里) 【今日歌曲】 @ 达尔文:分享花澤香菜/前野智昭/小野大輔/井上喜久子的单曲《ミッション! 健?康?第?イチ》 《ミッション! 健?康?第?イチ》- 花澤香菜/前野智...

小小编辑
今天
5
2
java -jar运行内存设置

java -Xms64m #JVM启动时的初始堆大小 -Xmx128m #最大堆大小 -Xmn64m #年轻代的大小,其余的空间是老年代 -XX:MaxMetaspaceSize=128m # -XX:CompressedClassSpaceSize=6...

李玉长
今天
1
0
Spring | 手把手教你SSM最优雅的整合方式

HEY 本节主要内容为:基于Spring从0到1搭建一个web工程,适合初学者,Java初级开发者。欢迎与我交流。 MODULE 新建一个Maven工程。 不论你是什么工具,选这个就可以了,然后next,直至finis...

冯文议
今天
1
0
RxJS的另外四种实现方式(四)——性能最高的库(续)

接上一篇RxJS的另外四种实现方式(三)——性能最高的库 上一篇文章我展示了这个最高性能库的实现方法。下面我介绍一下这个性能提升的秘密。 首先,为了弄清楚Most库究竟为何如此快,我必须借...

一个灰
今天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部