IDWriteTextLayout 接口 (dwrite.h)
IDWriteTextLayout 接口表示经过完全分析和格式化后的文本块。
继承
IDWriteTextLayout 接口继承自 IDWriteTextFormat。 IDWriteTextLayout 还具有以下类型的成员:
方法
IDWriteTextLayout 接口具有这些方法。
备注
若要获取对 IDWriteTextLayout 接口的引用,应用程序必须调用 IDWriteFactory::CreateTextLayout 方法,如以下代码所示。
// Create a text layout using the text format.
if (SUCCEEDED(hr))
{
RECT rect;
GetClientRect(hwnd_, &rect);
float width = rect.right / dpiScaleX_;
float height = rect.bottom / dpiScaleY_;
hr = pDWriteFactory_->CreateTextLayout(
wszText_, // The string to be laid out and formatted.
cTextLength_, // The length of the string.
pTextFormat_, // The text format to apply to the string (contains font information, etc).
width, // The width of the layout box.
height, // The height of the layout box.
&pTextLayout_ // The IDWriteTextLayout interface pointer.
);
}
IDWriteTextLayout 接口允许应用程序更改由 DWRITE_TEXT_RANGE 结构指定的它所代表的文本范围的格式。 以下示例演示如何设置文本范围的字体粗细。
// Set the font weight to bold for the first 5 letters.
DWRITE_TEXT_RANGE textRange = {0, 4};
if (SUCCEEDED(hr))
{
hr = pTextLayout_->SetFontWeight(DWRITE_FONT_WEIGHT_BOLD, textRange);
}
IDWriteTextLayout 还提供向文本添加删除线、下划线和内联对象的方法。
为了绘制 由 IDWriteTextLayout 对象表示的文本块, Direct2D 提供 ID2D1RenderTarget::D rawTextLayout 方法。 若要使用自定义呈现器进行绘制,请实现 IDWriteTextRenderer 接口并调用 IDWriteTextLayout::D raw 方法
DirectWrite和 Direct2D
为了绘制由 IDWriteTextLayout 对象表示的格式化字符串, Direct2D 提供 ID2D1RenderTarget::D rawTextLayout 方法。其他呈现选项
若要使用自定义呈现器呈现,请使用 IDWriteTextLayout::D raw 方法,该方法将派生自 IDWriteTextRenderer 的 回调接口作为参数,如以下代码所示。
// Draw the text layout using DirectWrite and the CustomTextRenderer class.
hr = pTextLayout_->Draw(
NULL,
pTextRenderer_, // Custom text renderer.
origin.x,
origin.y
);
IDWriteTextRenderer 声明用于绘制字形运行、下划线、删除线和内联对象的方法。 由应用程序来实现这些方法。 创建自定义文本呈现器允许应用程序在呈现文本时应用其他效果,例如自定义填充或轮廓。
使用自定义文本呈现器还可以使用其他技术(如 GDI)进行呈现。
要求
最低受支持的客户端 | Windows 7、带 SP2 的 Windows Vista 和适用于 Windows Vista 的平台更新 [桌面应用 |UWP 应用] |
最低受支持的服务器 | Windows Server 2008 R2、Windows Server 2008 SP2 和适用于 Windows Server 2008 的平台更新 [桌面应用 |UWP 应用] |
目标平台 | Windows |
标头 | dwrite.h |