我在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
会导致文本渲染模糊(灰色抗锯齿)。
RenderOptions.ClearTypeHint="Enabled"
应用于上面所见的ContentPresenter
,但没有效果。如何强制WPF以Cleartype抗锯齿方式渲染显示的具有阴影效果的文本,而不是那种丑陋的模糊灰色亚像素抗锯齿?
一些人认为这是由于阴影导致的模糊--这不是真的。它之所以模糊,仅因为未使用ClearType。下面是在Firefox中同时使用阴影和ClearType时的外观: