WPF:如果我在父级元素上使用阴影效果,为什么文本和元素会模糊

12 浏览
0 Comments

WPF:如果我在父级元素上使用阴影效果,为什么文本和元素会模糊

如果我在父元素上添加DropShadowEffect,子元素的文本会模糊。为什么?


    
        
    
    
        
    
    
        
    
    测试

更新:

有阴影

enter image description here

没有阴影

enter image description here

0
0 Comments

在WPF中,如果在父元素上使用dropshadow效果,文本和元素会模糊。解决这个问题的方法是在TextBlock上添加TextOptions.TextFormattingMode="Display"。可以参考WPF模糊字体问题-解决方案。如果将其添加到Grid上,效果可能会增加模糊度,比如将网格移动几个像素。但是,将其添加到TextBlock上没有改变任何效果。

0
0 Comments

问题出现的原因可能是子像素的问题。

尝试在网格中添加UseLayoutRounding = "True"

0
0 Comments

WPF: 为什么如果在父元素上使用dropshadow效果,文本和元素会模糊?

问题的原因是效果会导致元素及其所有子元素首先被渲染成位图。这意味着亚像素渲染(ClearType)无法进行,因此文本显示质量较低。

解决方法是只将效果应用于可视树的部分元素,而不包含文本的部分。

在你的情况下,你可能需要像这样做:


    
        
            
        
    
    Test

这应该被标记为接受的答案,因为显然是正确的。我认为你可能需要在border上设置背景而不是下面的文本块,以便显示阴影,因为如果border没有可视部分来投射阴影,阴影将不会显示。

感谢Patrick的答案,我接受了。抱歉回复晚了 😉

接受的答案可能并不完全正确,因为在我的情况下(阴影直接在文本上,但效果应用于ContentProvider),在设计器中是正常的,但在运行的应用程序中却不行。这里还有其他问题。

你也可以尝试

,这对我有帮助。

我尝试过这个方法,但根据屏幕上的位置不同,边框会在不同方向上偏移一个像素,这可能是由于四舍五入导致的。

0