Direct2D入门.doc

  1. 1、本文档共7页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Direct2D入门

Direct2D 是一个用本机代码编写的、即时模式的 API,用于创建 2D 图形。本主题说明如何在典型的 Win32 应用程序中使用 Direct2D 绘制到 HWND。 本主题包含以下几节内容: 绘制简单矩形 步骤 1:包含 Direct2D 头文件 步骤 2:创建 ID2D1Factory 步骤 3:创建 ID2D1HwndRenderTarget 步骤 4:创建画笔 步骤 5:绘制矩形 步骤 6:释放资源 创建简单的 Direct2D 应用程序 相关主题 若要使用?GDI?绘制矩形,可以处理?WM_PAINT?消息,如下面的代码所示。 使用 Direct2D 绘制该矩形的代码很相似:它创建绘制资源,说明要绘制的形状,绘制该形状,然后释放绘制资源。下面几节详细说明以上每个步骤。 除了 Win32 应用程序所需要的头文件之外,还包含d2d1.h 头文件。 所有 Direct2D 示例首先要完成一些任务,其中之一就是创建?ID2D1Factory。 ID2D1Factory?接口是使用 Direct2D 的起点;使用?ID2D1Factory?可创建 Direct2D 资源。 创建工厂时,可指定它是多线程还是单线程的。(有关多线程工厂的详细信息,请参见?ID2D1Factory 参考页面上的备注。)此示例创建一个单线程工厂。 一般而言,应用程序应创建一次工厂,然后在应用程序的生命周期中保留它。 创建工厂之后,使用它来创建呈现器目标。 呈现器目标是一种设备,可执行绘制操作和创建与设备相关的绘制资源,如画笔。不同类型的呈现器目标呈现到不同设备。前面的示例使用?ID2D1HwndRenderTarget,它呈现到一部分屏幕上。 呈现器目标尽可能使用 GPU 来加速呈现操作和创建绘制资源。否则,呈现器目标使用 CPU 来处理呈现指令和创建资源。(通过在创建呈现器目标时使用?D2D1_RENDER_TARGET_TYPE?标志,可以修改此行为。) CreateHwndRenderTarget?方法采用三个参数。第一个参数是一个?D2D1_RENDER_TARGET_PROPERTIES?结构,指定远程显示选项,是强制呈现器目标呈现到软件还是硬件以及 DPI。此示例中的代码使用D2D1::RenderTargetProperties?帮助程序函数来接受默认的呈现器目标属性。 第二个参数是一个?D2D1_HWND_RENDER_TARGET_PROPERTIES?结构,它指定内容要呈现到的 HWND、呈现器目标的初始大小(以像素为单位)及其显示选项。此示例使用?D2D1::HwndRenderTargetProperties?帮助程序函数来指定 HWND 和初始大小。它使用默认显示选项。 第三个参数是接收呈现器目标引用的指针的地址。 创建呈现器目标且硬件加速可用时,将分配计算机的 GPU 上的资源。通过创建一次呈现器目标并保留尽量长的时间,可以提高性能。应用程序应创建一次呈现器目标,然后在应用程序的生命周期中保留或保留至接收到D2DERR_RECREATE_TARGET?错误时为止。如果接收到该错误,则需要重新创建呈现器目标(及其创建的所有资源)。 和工厂一样,呈现器目标可以创建绘制资源。在此示例中,呈现器目标创建一个画笔。 画笔是用于绘制区域的对象,如某个形状的笔画或几何对象的填充。此示例中的画笔将区域绘制为预定义的纯色(黑色)。 Direct2D 还提供其他类型的画笔:用于绘制线性渐变和径向渐变的渐变画笔,用于绘制位图和图案的位图画笔。 部分绘制 API 提供了用于绘制轮廓的钢笔和用于填充形状的画笔。Direct2D 则不同:它不提供钢笔对象,而是使用画笔来绘制轮廓和填充形状。绘制轮廓时,结合使用?ID2D1StrokeStyle?接口和画笔来控制路径笔画绘制操作。 画笔只能用于创建它的呈现器目标以及在相同资源域中的其他呈现器目标。一般而言,应创建一次画笔,然后在创建画笔的呈现器目标的生命周期中保留它们。ID2D1SolidColorBrush?是一个例外;因为相对来说,创建它的开销较小,您可在每绘制一帧时创建一个?ID2D1SolidColorBrush,这样不会明显影响性能。也可以使用单个ID2D1SolidColorBrush,每次使用它时更改其颜色即可。 接下来,使用呈现器目标绘制矩形。 DrawRectangle?方法采用两个参数:要绘制的矩形和要用来绘制矩形轮廓的画笔。您也可以选择指定笔画宽度、短划线图案、线条连接和末端选项。 在发出任何绘制命令之前,必须调用?BeginDraw?方法,在发出绘制命令之后,必须调用?EndDraw?方法。EndDraw方法返回 HRESULT,它指示绘制命令是否成功执行。 绘制了所有帧之后

文档评论(0)

liudao + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档