文档章节

Direct2D (1) : 第一个例子

涂孟超
 涂孟超
发布于 2014/09/26 15:37
字数 320
阅读 16
收藏 1
点赞 0
评论 0

应该是 Delphi 2009 就支持 Direct2D 了,但那时我还用着 WinXP 系统(不支持);现在的测试环境是 Win7+DelphiXE。

Direct2D 属 DirectX 家族,是 GDI、GDI+ 的继任者,支持硬件加速,并能与 GDI、GDI+、D3D 交互。
其它初步的印象是其文本处理和图像处理分别使用了 DirectWrite 和 WIC 技术,还有支持图层。

相关单元是 Direct2D.pas 和 D2D1.pas。
Direct2D.pas 中是 Delphi 对 Direct2D 的简单实现,需要其更多功能时还应从 D2D1.pas 中挖掘。

Direct2D.pas 单元中主要包含 TDirect2DGraphicsObject、TDirect2DBrush、TDirect2DPen、TDirect2DFont、TDirect2DCanvas 五个类,
其中 TDirect2DGraphicsObject 是 TDirect2DBrush、TDirect2DPen、TDirect2DFont 的父类,一般不会单独使用,
TDirect2DCanvas 在实例化时会自动建立并拥有 TDirect2DBrush、TDirect2DPen、TDirect2DFont 三个类的对象,所以:
学习主要面对的就是 TDirect2DCanvas 类。

粗粗一看源码,感觉 TDirect2DCanvas 的成员与 TCanvas 极为相似,因为它们同是从 TCustomCanvas 继承,所以拥有很多共同特性。

第一个例子:

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs;

type
  TForm1 = class(TForm)
    procedure FormPaint(Sender: TObject);
    procedure FormResize(Sender: TObject);
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

uses Direct2D;

procedure TForm1.FormPaint(Sender: TObject);
var
  d2dCanvas: TDirect2DCanvas;
begin
  d2dCanvas := TDirect2DCanvas.Create(Canvas, ClientRect);
  d2dCanvas.BeginDraw;
  d2dCanvas.Pen.Color := clRed;
  d2dCanvas.Pen.Width := 4;
  d2dCanvas.Ellipse(50, 50, ClientWidth-50, ClientHeight-50);
  d2dCanvas.EndDraw;
  d2dCanvas.Free;
end;

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

end.

本文转载自:http://www.cnblogs.com/del/archive/2011/03/30/1999675.html

共有 人打赏支持
涂孟超
粉丝 12
博文 2004
码字总数 14107
作品 0
深圳
程序员
Direct2D教程(十)绘制文本

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

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

Direct2D教程(十二)图层

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

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

WPF 使用 Direct2D1 画图 绘制基本图形

本文来告诉大家如何在 Direct2D1 绘制基本图形,包括线段、矩形、椭圆 本文是一个系列 WPF 使用 Direct2D1 画图入门 WPF 使用 Direct2D1 画图 绘制基本图形 本文的组织参考Direct2D,对大神表...

lindexi_gd ⋅ 04/19 ⋅ 0

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

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

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

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

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

长平狐 ⋅ 2012/11/12 ⋅ 0

pdf.js 发布 v0.2 版本

上个月,Mozilla透露正在开发基于JavaScript的PDF阅读器pdf.js,直接在标准的HTML页面上载入和渲染PDF文件。现在,pdf.js项目到达了它的第一个里程碑,发布了v0.2版本,它已能完美渲染一篇关...

子木007 ⋅ 2011/07/05 ⋅ 4

WhiteStarUML 5.6.1 发布,UML 建模软件

WhiteStarUML 发布了 5.6.1 版本。 该版本的改动: 新增选项:现在可以在 Windows 7+上面选择启用 Direct2D 来绘制反锯齿图形。勾选 General -> Use Direct2D 添加了“复制/粘贴格式”命令 ...

daxiaoming ⋅ 2015/01/26 ⋅ 9

Windows桌面应用程序(1-2-4-7th) DPI和设备无关的像素

要使用Windows图形进行有效编程,您必须了解两个相关的概念: 每英寸点数(DPI) 设备无关像素(DIP)。 我们从DPI开始。这将需要短暂的绕行排版。在印刷术中,类型的大小以称为点的单位来测量。一点...

qq_37422196 ⋅ 01/12 ⋅ 0

pdf.js 发布 v0.2 版本

上个月,Mozilla透露正在开发基于JavaScript的PDF阅读器pdf.js,直接在标准的HTML页面上载入和渲染PDF文件。现在,pdf.js项目到达了它的第一个里程碑,发布了v0.2版本,它已能完美渲染一篇关...

红薯 ⋅ 2011/07/04 ⋅ 3

硬件加速:浏览器大战的新前沿

硬件加速:浏览器大战的新前沿 作者:Frederic Lardinois / 2009年11月24日 9:04AM 微软在本月初召开的专业开发者大会(Professional Developers Conference)上宣布了其最新的IE9计划,微软在...

老枪 ⋅ 2009/11/26 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

645. Set Mismatch - LeetCode

Question 645. Set Mismatch Solution 思路: 遍历每个数字,然后将其应该出现的位置上的数字变为其相反数,这样如果我们再变为其相反数之前已经成负数了,说明该数字是重复数,将其将入结果r...

yysue ⋅ 9分钟前 ⋅ 0

Confluence 6 从生产环境中恢复一个测试实例

请参考 Restoring a Test Instance from Production 页面中的内容获得更多完整的说明。 很多 Confluence 的管理员将会使用生产实例运行完整数据和服务的 Confluence 服务器,同时还会设置一个...

honeymose ⋅ 13分钟前 ⋅ 0

Python这么强?红包杀手、消息撤回也可以无视,手机App辅助!

论述 标题也许有点不好理解,其实就是一款利用Python实现的可以监控微信APP内的红包与消息撤回的助手。不得不说,这确实是一款大家钟意的神器。 消息撤回是一件很让人恶心的事,毕竟人都是有...

Python燕大侠 ⋅ 25分钟前 ⋅ 0

压缩打包介绍、gzip压缩工具、bzip2压缩工具、xz压缩工具

压缩打包介绍 压缩的好处不仅能节省磁盘空间而且在传输的时候节省传输时间和网络带宽 windows系统下文件带有 .rar .zip .7z 后缀的就是压缩文件 linux系统下则是 .zip, .gz, .bz2, .xz, ...

黄昏残影 ⋅ 29分钟前 ⋅ 0

观察者模式

1.利用java原生类进行操作 package observer;import java.util.Observable;import java.util.Observer;/** * @author shadow * @Date 2016年8月12日下午7:29:31 * @Fun 观察目标 **/......

Cobbage ⋅ 32分钟前 ⋅ 0

Ubuntu打印服务器配置

参考:https://blog.csdn.net/gsls200808/article/details/50950586 https://blog.csdn.net/jiay2/article/details/80252369 https://wiki.gentoo.org/wiki/HPLIP 由于媳妇儿要大量打印资料,......

大熊猫 ⋅ 38分钟前 ⋅ 0

面试的角度诠释Java工程师(二)

原文出处: locality 续言: 相信每一位简书的作者,都会有我这样的思考:怎么写好一篇文章?或者怎么写好一篇技术类的文章?我就先说说我的感悟吧,写文章其实和写程序是一样的。为什么我会...

颖伙虫 ⋅ 40分钟前 ⋅ 0

github中SSH的Key

https://help.github.com/articles/connecting-to-github-with-ssh/ https://help.github.com/articles/testing-your-ssh-connection/ https://help.github.com/articles/adding-a-new-ssh-k......

whoisliang ⋅ 41分钟前 ⋅ 0

only_full_group_by

我的mysql是在CentOS7.1下面的5.7.17 在 /etc/my.cnf 文件里加上如下: sql_mode='NO_ENGINE_SUBSTITUTION' 然后,重启Mysql服务 systemctl restart mysqld...

SunHacker ⋅ 今天 ⋅ 0

实际项目(SpringBoot项目)中集成Druid

参考网页 https://blog.csdn.net/liuchuanhong1/article/details/55050131 https://blog.csdn.net/CoffeeAndIce/article/details/78707819 https://www.pocketdigi.com/20170530/1577.html 为......

karma123 ⋅ 今天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部