Direct2D DirectWrite绘制文字

来源:互联网 发布:中国文化软实力 知乎 编辑:程序博客网 时间:2024/05/16 12:00
绘制文本使用DirectWrite

为了简化 DirectWrite 的使用,RenderTarget有3个方法可以直接绘制文本:
  • DrawText,用于简单绘制,支持Unicode。
  • DrawTextLayout ,提供布局和格式。
  • DrawGlyphRun,精确控制字形级别布局。

写一个简单的例子:
别忘了头文件和lib
#include "wincodec.h"
dwrite.lib;
下面的是d2d必须的
d2d1.lib;
dxgi.lib;
dxguid.lib;

创建文本的流程如下:
类似于,还是需要一个Factory,只不过这次是:
  1. IDWriteFactory。然后初始化。
  2. 然后创建文本格式,包括字体,字号等。
  3. 设置绘制布局。
  4. 绘制。

pRenderTarget->BeginDraw();IDWriteFactory* pDWriteFactory = NULL;IDWriteTextFormat* pTextFormat = NULL;// create dwrite factoryDWriteCreateFactory(DWRITE_FACTORY_TYPE_SHARED,__uuidof(IDWriteFactory),reinterpret_cast<IUnknown**>(&pDWriteFactory));//create text formathr = pDWriteFactory->CreateTextFormat(L"Arial", NULL,DWRITE_FONT_WEIGHT_NORMAL, DWRITE_FONT_STYLE_NORMAL, DWRITE_FONT_STRETCH_NORMAL, 20.0f * 96.0f/72.0f, L"en-US", &pTextFormat);D2D1_RECT_F layoutRect = D2D1::RectF(1000.f, 1000.f, 200.f, 200.f);//draw textpRenderTarget->DrawText(L"Hello D2D",wcslen(L"Hello D2D"),pTextFormat,layoutRect, pBlackBrush);pRenderTarget->EndDraw();

更多介绍MSDN
http://msdn.microsoft.com/zh-CN/library/windows/apps/dd371554