このテンプレートと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
みましたが、効果がありません。
ドロップシャドウ効果で表示されるテキストを強制的にレンダリングして、醜いぼやけた灰色のサブピクセルアンチエイリアシングではなく、Cleartypeアンチエイリアシングを保持するにはどうすればよいですか?
ドロップシャドウが原因でぼやけていると考える人もいますが、これは正しくありません。ClearTypeが使用されていないため、ぼやけています。これは、シャドウとClearTypeを使用したFirefoxでの外観です。
ClearType対応のテキストはカラフルですが、ClearTypeを使用していないため、ぼやけたテキストはそうではありません。灰色のサブピクセルアンチエイリアシングを使用しており、ClearTypeの動作とは異なります。http://en.wikipedia.org/wiki/ ClearType
問題は、このテキストに対してClearTypeを有効にするにはどうすればよいですか?