TextFormatter 类

定义

使用自定义文本布局客户端提供用于为文本设置格式及断开文本行的服务。

public ref class TextFormatter abstract : IDisposable
public abstract class TextFormatter : IDisposable
type TextFormatter = class
    interface IDisposable
Public MustInherit Class TextFormatter
Implements IDisposable
继承
TextFormatter
实现

示例

下面的示例演示如何使用 TextFormatter 对象生成可显示为绘图对象的格式化文本行。

// Create a TextFormatter object.
TextFormatter formatter = TextFormatter.Create();

// Create common paragraph property settings.
CustomTextParagraphProperties customTextParagraphProperties
    = new CustomTextParagraphProperties();

// Format each line of text from the text store and draw it.
while (textStorePosition < customTextSource.Text.Length)
{
    // Create a textline from the text store using the TextFormatter object.
    using (TextLine myTextLine = formatter.FormatLine(
        customTextSource,
        textStorePosition,
        96 * 6,
        customTextParagraphProperties,
        null))
    {
        // Draw the formatted text into the drawing context.
        myTextLine.Draw(drawingContext, linePosition, InvertAxes.None);

        // Update the index position in the text store.
        textStorePosition += myTextLine.Length;

        // Update the line position coordinate for the displayed line.
        linePosition.Y += myTextLine.Height;
    }
}
' Create a TextFormatter object.
Dim formatter As TextFormatter = TextFormatter.Create()

' Create common paragraph property settings.
Dim customTextParagraphProperties As New CustomTextParagraphProperties()

' Format each line of text from the text store and draw it.
Do While textStorePosition < customTextSource.Text.Length
    ' Create a textline from the text store using the TextFormatter object.
    Using myTextLine As TextLine = formatter.FormatLine(customTextSource, textStorePosition, 96 * 6, customTextParagraphProperties, Nothing)
        ' Draw the formatted text into the drawing context.
        myTextLine.Draw(drawingContext, linePosition, InvertAxes.None)

        ' Update the index position in the text store.
        textStorePosition += myTextLine.Length

        ' Update the line position coordinate for the displayed line.
        linePosition.Y += myTextLine.Height
    End Using
Loop

注解

TextFormatter 是 WPF 文本引擎,提供用于设置文本格式和中断文本行的服务。 TextFormatter 可以处理不同的文本字符格式和段落样式,并包括对国际文本布局的支持。

与传统文本 API 不同,该 TextFormatter API 通过一组回调方法与文本布局客户端交互。 它要求客户端在类的 TextSource 实现中提供这些方法。 下图演示了文本格式化程序客户端和文本布局客户端的交互。

文本布局客户端和 TextFormatter 示意图
文本布局客户端与 TextFormatter 对象之间的交互

文本格式设置服务

TextFormatter 提供对文本功能(如 OpenType 版式)的支持,以及对文本运行、行和段落级别功能的支持。

下表列出了文本功能的关键 TextFormatter 支持服务。

功能 说明
背景画笔 Brush用于背景色的项。 请参阅 BackgroundBrush 属性。
基线对齐方式 确定线条的基线距离。 请参阅 BaselineAlignment 属性。
字体链接 使用复合字体提供字体链接。
前景画笔 Brush用于前景色的。 请参阅 ForegroundBrush 属性。
OpenType 高级 OpenType 版式功能,例如上下文备用项和标准连字。 TextRunTypographyProperties请参阅类属性。
字样 确定字样以及粗细、样式和拉伸。 请参阅 Typeface 属性。
文本修饰 提供对 TextDecoration 对象(如下划线或删除线)的支持。 请参阅 TextDecorations 属性。
文本效果 提供对 TextEffect 对象的支持。 请参阅 TextEffects 属性。

下表列出了段落级功能的关键 TextFormatter 支持服务。

功能 说明
Flow方向 Flow段落方向 - 从左到右或从右到左。 请参阅 FlowDirection 属性。
行缩进 段落中每行的缩进。 请参阅 Indent 属性。
标记 段落中第一行的标记特征。 请参阅 TextMarkerProperties 属性。
段落缩进 段落中第一行的缩进。 请参阅 ParagraphIndent 属性。
制表符 包括对选项卡对齐和制表符前导的支持。
宽度 确定最小和最大段落宽度。 请参阅方法 FormatMinMaxParagraphWidth
自动换行 确定文本在到达流边缘时如何换行。 请参阅 TextWrapping 属性。

下表列出了行级功能的关键 TextFormatter 支持服务。

功能 说明
对齐方式 文本对齐方式 - 左、右、居中或对齐。 请参阅 TextAlignment 属性。
行高 线条的高度。 请参阅 Height 属性。
行折叠 行折叠支持。 请参阅该方法 Collapse
黑盒度量 表示用于对设备字体字符进行布局的规格。 请参阅 CharacterMetrics 类。
插入符号支持 插入导航和编辑支持。 TextLine请参阅字符命中属性,例如GetNextCaretCharacterHitGetPreviousCaretCharacterHit

下表列出了文本运行级别功能的关键 TextFormatter 支持服务。

功能 说明
隐藏运行 不可见的字符范围。 请参阅对象 TextHidden
重大 换行符和段落中断。

构造函数

TextFormatter()

初始化 TextFormatter 类的新实例。

方法

Create()

创建 TextFormatter 类的新实例。 这是一种静态方法。

Create(TextFormattingMode)

使用指定的格式设置模式创建 TextFormatter 类的新实例。 这是一种静态方法。

Dispose()

释放由 TextFormatter 对象使用的所有托管资源和非托管资源。

Equals(Object)

确定指定对象是否等于当前对象。

(继承自 Object)
FormatLine(TextSource, Int32, Double, TextParagraphProperties, TextLineBreak)

创建一个 TextLine,用来为文档内容设置格式并显示文档内容。

FormatLine(TextSource, Int32, Double, TextParagraphProperties, TextLineBreak, TextRunCache)

创建一个 TextLine,用来为文档内容设置格式并显示文档内容。

FormatMinMaxParagraphWidth(TextSource, Int32, TextParagraphProperties)

返回一个值,该值表示可完全包含指定文本内容的最小和最大可能的段落宽度。

FormatMinMaxParagraphWidth(TextSource, Int32, TextParagraphProperties, TextRunCache)

返回一个值,该值表示可完全包含指定文本内容的最小和最大可能的段落宽度。

GetHashCode()

作为默认哈希函数。

(继承自 Object)
GetType()

获取当前实例的 Type

(继承自 Object)
MemberwiseClone()

创建当前 Object 的浅表副本。

(继承自 Object)
ToString()

返回表示当前对象的字符串。

(继承自 Object)

适用于

另请参阅