web-dev-qa-db-ja.com

ボタンのWPFドロップシャドウにより、テキストがぼやけます

これは私を狂わせるようなものです。ボタンにDropShadowEffectを追加します。 IDEでは次のようになります:

enter image description here

2番目のボタンは、DropShadowEffectのない参照用です。ご覧のとおり、次に違いはありません。次に、プロジェクトをビルドすると、実行すると次のようになります。

enter image description here

この変化の原因は何ですか? 2つのボタンのXAMLは次のとおりです。

<Button Name="clearButton" Content="Clear" Click="clearButton_Click" Margin="5,0,5,0" MaxWidth="80" MinHeight="40" 
    TextOptions.TextFormattingMode="Display">
<Button.Effect>
    <DropShadowEffect BlurRadius="5" ShadowDepth="3" />
</Button.Effect>
</Button>
<Button Content="Clear" Margin="5,5,5,0" MaxWidth="80" MinHeight="40"  TextOptions.TextFormattingMode="Display" />

編集:@gretroを使用すると見栄えが良くなりますが、それでも正しくありません:

enter image description here

しかし、もう一度IDEで問題ないように見えます:

enter image description here

19
Xaphann

ボタン全体がクロスピクセル境界でレンダリングされています。 1ポイントの境界線が実際に複数のピクセルにまたがっており、ぼやけた効果が生じていることに注意してください。

親または祖先要素にUseLayoutRounding="True"を設定してみてください。ツリーの上位にあるほど良いです(ビューのルートビジュアルが理想的です)。 SnapsToDevicePixels="True"を試すこともできます。

32
Mike Strobel

添付されたプロパティを削除しますTextOptions.TextFormattingMode="Display"。これがボタンがぼやける原因です。

<Button Grid.Row="25" Grid.Column="0" Content="Clear">
    <Button.Effect>
       <DropShadowEffect BlurRadius="5" ShadowDepth="3" />
    </Button.Effect>
</Button>

このXAMLは、ボタンに非常にクリアなテキストをレンダリングし、シャドウ効果を提供します。

4
gretro