Tow*_*wer 6 .net c# wpf xaml cleartype
我在WPF/XAML中有一个带有此模板和样式的网格:
<Setter Property="TextOptions.TextFormattingMode" Value="Display" />
<Setter Property="RenderOptions.ClearTypeHint" Value="Enabled" />
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type DataGridCell}">
<Border Padding="{TemplateBinding Padding}" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" Background="{TemplateBinding Background}" SnapsToDevicePixels="True">
<ContentPresenter x:Name="CellContent" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" RenderOptions.ClearTypeHint="Enabled" />
</Border>
<ControlTemplate.Triggers>
<Trigger Property="IsSelected" Value="True">
<Setter TargetName="CellContent" Property="TextOptions.TextFormattingMode" Value="Display" />
<Setter TargetName="CellContent" Property="RenderOptions.ClearTypeHint" Value="Enabled" />
<Setter TargetName="CellContent" Property="Effect">
<Setter.Value>
<DropShadowEffect ShadowDepth="2" BlurRadius="2" Color="Black" RenderingBias="Quality" />
</Setter.Value>
</Setter>
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
Run Code Online (Sandbox Code Playgroud)
在DropShadowEffect当你选择一个网格行我有,似乎使文本渲染模糊(灰色抗锯齿):

当我删除阴影效果时,它看起来很清晰,因为它现在使用ClearType而不是灰色子像素消除锯齿:

我曾尝试应用RenderOptions.ClearTypeHint="Enabled"在ContentPresenter上面看到的,但它并不能帮助.
如何强制WPF渲染使用投影效果显示的文本以保留Cleartype抗锯齿,而不是那种丑陋模糊的灰色子像素抗锯齿?
有些人认为它因为投影而变得模糊 - 这不是真的.它只是模糊,因为没有使用ClearType.这是它在Firefox中的阴影和ClearType时的样子:

启用ClearType的文本很丰富 - 但模糊的文本不是,因为它不使用ClearType - 它使用灰色子像素消除锯齿,而不是ClearType的工作方式:http://en.wikipedia.org/wiki/的ClearType
问题是:如何为此文本启用ClearType?
Jus*_* XL 12
如何设置TextOptions.TextFormattingMode到Display以及RenderOptions.BitmapScalingMode到NearestNeighbor?后者是WPF 3.5 SP1中的新功能,我通常用它来消除模糊.:)
<TextBlock Text="Hello world" TextOptions.TextFormattingMode="Display" RenderOptions.BitmapScalingMode="NearestNeighbor" HorizontalAlignment="Center" TextWrapping="Wrap" VerticalAlignment="Center" Foreground="White" FontFamily="Microsoft Sans Serif">
<TextBlock.Effect>
<DropShadowEffect ShadowDepth="2" BlurRadius="2" Color="Black" RenderingBias="Quality"/>
</TextBlock.Effect>
</TextBlock>
Run Code Online (Sandbox Code Playgroud)
下面是它的样子.

这就是它在FireFox中的样子.

该DropShadowEffect对象无法与ClearType的工作。这在 MSDN 页面How to: Create Text with a Shadow 中有说明:
这些阴影效果不会通过 Windows Presentation Foundation (WPF) 文本呈现管道。因此,在使用这些效果时,ClearType 被禁用。
毕竟DropShadowEffect是位图效果,不是文字效果。