按钮上的WPF Dropshadow会导致文本模糊

时间:2014-02-03 21:34:57

标签: c# wpf dropshadow

这有点让我疯狂。将DropShadowEffect添加到按钮。在IDE中它看起来像这样:

enter image description here

第二个按钮仅供参考,没有DropShadowEffect。你可以看到下一个没有区别。然后我构建项目,当它运行时,它看起来像这样:

enter image description here

造成这种变化的原因是什么?这是两个按钮的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

2 个答案:

答案 0 :(得分:32)

您的整个按钮呈现在跨像素边界上。请注意1点边框实际上跨越多个像素,导致模糊效果。

尝试在父元素或祖先元素上设置UseLayoutRounding="True"。树的越远越好(你的视图的根视觉是理想的)。您也可以尝试SnapsToDevicePixels="True"

答案 1 :(得分:4)

删除附加的属性TextOptions.TextFormattingMode="Display"。这就是导致按钮模糊的原因。

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

这个XAML在按钮中呈现水晶般清晰的文字,并带有阴影效果。