IDWriteTextLayout 接口 (dwrite.h)

IDWriteTextLayout 接口表示经过完全分析和格式化后的文本块。

继承

IDWriteTextLayout 接口继承自 IDWriteTextFormatIDWriteTextLayout 还具有以下类型的成员:

方法

IDWriteTextLayout 接口具有这些方法。

 
IDWriteTextLayout::D etermineMinWidth

确定布局可以设置为的最小可能宽度,而不会在发生整个单词的字符之间发生紧急中断。
IDWriteTextLayout::D raw

使用指定的客户端绘图上下文绘制文本。
IDWriteTextLayout::GetClusterMetrics

检索每个字形群集的逻辑属性和度量值。
IDWriteTextLayout::GetDrawingEffect

获取指定文本位置处的应用程序定义的绘图效果。
IDWriteTextLayout::GetFontCollection

获取与指定位置处的文本关联的字体集合。
IDWriteTextLayout::GetFontFamilyName

在指定的位置复制文本的字体系列名。
IDWriteTextLayout::GetFontFamilyNameLength

获取当前位置的字体系列名称的长度。
IDWriteTextLayout::GetFontSize

获取指定位置处文本的字体高度。
IDWriteTextLayout::GetFontStretch

获取文本在指定位置的字体延伸。
IDWriteTextLayout::GetFontStyle

获取文本在指定位置 (也称为斜) 的字体样式。
IDWriteTextLayout::GetFontWeight

获取位于指定位置的文本的字体粗细。
IDWriteTextLayout::GetInlineObject

获取位于指定位置的内联对象。
IDWriteTextLayout::GetLineMetrics

检索有关文本字符串的每个文本行的信息。
IDWriteTextLayout::GetLocaleName

在指定的位置获取文本的区域设置名称。
IDWriteTextLayout::GetLocaleNameLength

获取位于指定位置的文本的区域设置名称的长度。
IDWriteTextLayout::GetMaxHeight

获取布局最大高度。
IDWriteTextLayout::GetMaxWidth

获取布局最大宽度。
IDWriteTextLayout::GetMetrics

检索格式化字符串的总体指标。 (IDWriteTextLayout.GetMetrics)
IDWriteTextLayout::GetOverhangMetrics

返回布局及其包含的所有对象(包括文本字形和内联对象)) DIP 中的悬垂 (。
IDWriteTextLayout::GetStrikethrough

获取文本在指定位置的删除线状态。
IDWriteTextLayout::GetTypography

获取文本在指定位置的版式设置。
IDWriteTextLayout::GetUnderline

获取文本在指定位置处的下划线状态。
IDWriteTextLayout::HitTestPoint

应用程序调用此函数传入相对于布局框左上角位置的特定像素位置,并获取发生命中测试的文本字符串的对应命中测试指标的信息。
IDWriteTextLayout::HitTestTextPosition

应用程序调用此函数以获取相对于布局框左上角的像素位置(给定文本位置和位置的逻辑侧)。
IDWriteTextLayout::HitTestTextRange

应用程序调用此函数以获取一组与文本位置范围对应的命中测试指标。 main用法之一是实现文本字符串的突出显示选择。
IDWriteTextLayout::SetDrawingEffect

设置应用程序定义的绘图效果。
IDWriteTextLayout::SetFontCollection

设置字体集合。
IDWriteTextLayout::SetFontFamilyName

为指定文本范围内的文本设置以 null 结尾的字体系列名称。
IDWriteTextLayout::SetFontSize

设置指定文本范围内文本的字号(以 DIP 单位为单位)。
IDWriteTextLayout::SetFontStretch

设置指定文本范围内的文本的字体拉伸。
IDWriteTextLayout::SetFontStyle

设置由DWRITE_TEXT_RANGE结构指定的文本范围内的文本的字体样式。
IDWriteTextLayout::SetFontWeight

设置由DWRITE_TEXT_RANGE结构指定的文本范围内的文本的字体粗细。
IDWriteTextLayout::SetInlineObject

设置内联对象。
IDWriteTextLayout::SetLocaleName

设置指定文本范围内文本的区域设置名称。
IDWriteTextLayout::SetMaxHeight

设置布局最大高度。
IDWriteTextLayout::SetMaxWidth

设置布局最大宽度。
IDWriteTextLayout::SetStrikethrough

为指定文本范围内的文本设置删除线。
IDWriteTextLayout::SetTypography

设置指定文本范围内文本的字体版式功能。
IDWriteTextLayout::SetUnderline

设置指定文本范围内的文本的下划线。

备注

若要获取对 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

请参阅

IDWriteTextFormat