我在 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>
当DropShadowEffect
您选择网格行时,我有,似乎使文本渲染模糊(灰色抗锯齿):
当我删除阴影效果时,它看起来很清晰,因为它现在使用 ClearType 而不是灰色子像素抗锯齿:
我已经尝试申请RenderOptions.ClearTypeHint="Enabled"
如上ContentPresenter
所示,但它没有帮助。
如何强制 WPF 呈现以投影效果显示的文本以保留 Cleartype 抗锯齿,而不是那种丑陋的模糊灰色亚像素抗锯齿?
有些人认为它是模糊的,因为有阴影——这不是真的。只是因为没有使用 ClearType 才模糊。这是阴影和 ClearType 在 Firefox 中的样子:
启用 ClearType 的文本是彩色的——但模糊文本不是,因为它不使用 ClearType——它使用灰色亚像素抗锯齿,这不是 ClearType 的工作方式:http ://en.wikipedia.org/wiki/清除类型
问题是:如何为此文本启用 ClearType?