RenderOptions.ClearTypeHint 附加属性

定义

获取或设置一个值,该值向呈现引擎指示能否用 ClearType 呈现文本。

see GetClearTypeHint, and SetClearTypeHint
see GetClearTypeHint, and SetClearTypeHint
see GetClearTypeHint, and SetClearTypeHint

示例

以下示例演示 属性 ClearTypeHint 如何影响可视化树的不同分支。 在第一个文本块控件中,文本使用 ClearType 呈现,因为文本块从主窗口继承设置。 第二个文本块中不使用 ClearType,因为设置了父元素的 OpacityMask 属性。 在第三个文本块 ClearTypeHint 中使用 ,但可能会出现呈现问题。

<Window x:Class="ClearTypeHintDemo.Window1"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="Window1" Height="300" Width="300"
        AllowsTransparency="True"
        WindowStyle="None"
        RenderOptions.ClearTypeHint="Enabled"
        Background="White">
    <Window.Resources>
        <LinearGradientBrush x:Key="opacityBrush" >
            <GradientStop Color="#FF000000" Offset="0.0" />
            <GradientStop Color="#00000000" Offset="1.0" />
        </LinearGradientBrush>
    </Window.Resources>

    <StackPanel>
        <TextBlock Text="This text is rendered with ClearType." />
        <StackPanel OpacityMask="{StaticResource opacityBrush}" >
            <TextBlock Text="This text is not rendered with ClearType." />
            <TextBlock RenderOptions.ClearTypeHint="Enabled"
                       Text="This text is rendered with ClearType but may alpha-blend incorrectly." />
        </StackPanel>
    </StackPanel>
</Window>

注解

ClearTypeHint使用附加属性指示文本可以使用 ClearType 在可视化树的特定部分呈现。

ClearType 文本在非完全不透明的背景上无法正确显示。 中间呈现目标(如 EffectOpacityMaskVisualBrushDrawingBrushClipOpacity)可以引入不完全不透明的背景。 当 WPF 检测到在其中绘制文本的缓冲区可能具有透明背景时,将禁用 ClearType。

ClearTypeHint 属性设置为 Enabled 以指示子树对于 ClearType 文本呈现是安全的。 仅当可以确定文本呈现为完全不透明背景时,才执行此操作。 当子树中的元素引入透明度时,可以启用 ClearType;但是,可能会出现呈现问题。 如果子树的一部分引入了更多中间呈现目标,则必须在该子树的子级上再次设置 ClearTypeHint

以下列表演示如何确保使用 ClearType 呈现的文本正确显示。

  • 不要在 和要使用 ClearType 呈现的文本之间 ClearTypeHint 引入中间呈现目标。

  • 在可视化树中分配尽可能接近文本的不透明背景。

  • 请注意, ClearTypeHint 为子树重新启用 ClearType;但是,它不会强制 ClearType 呈现。

  • 请注意, ClearTypeHint 不会替代系统设置或 TextRenderingMode 设置。

注意

附加 ClearTypeHint 属性不会影响 TextBox 控件;但是,它确实适用于 控件 TextBlock

注意

在许多控件上 ClearTypeHint ,除非在文本后面设置不透明背景,否则附加属性不起作用。

若要在代码中访问此属性,请使用 GetClearTypeHintSetClearTypeHint 方法。

适用于