问题 WPF DropShadowEffect导致模糊


我观察到,偶尔将一个DropShadowEffect应用于UIElement会导致UIElement的内容模糊不清。这是一个非常讨厌的效果:它可能导致照片失焦或更糟 - 使整个“弹出”区域完全难以理解。

我还没有看到有人在抱怨这个,所以我倾向于认为有些事我做错了。

样本使用(随机模糊内容):

<Border>
   <Border.Effect>
      <DropShadowEffect />
   </Border.Effect>
   <!-- (Content) -->
</Border>

但删除DropShadowEffect会将其清除:

<Border>
    <!--<Border.Effect>
            <DropShadowEffect />
        </Border.Effect>-->
    <!-- (Content) -->
</Border>

有任何想法吗?

编辑(添加截图):

alt text http://signmgmt.com/eg/dropshadowblur.png


2794
2017-11-06 15:39


起源

你能发布截图吗? - Simon P Stevens
截图添加。 - egoodberry


答案:


我为这种场景做的是放置一个背景矩形并仅为此应用模糊效果,这样真正的内容就不会受到影响,从而提高了性能。因为当您将效果应用于视觉效果时,所有后续的孩子也会获得应用效果,这会使得穿孔和外观变坏。试试下面的内容

 <Grid>
  <Rectangle ....>
  <Rectangle.Effect>
     <DropShadowEffect />
  </Rectangle.Effect>
 </Rectangle>
....Your content ...
</Grid>

12
2017-11-06 18:48



一种看似有效的非常好的方法。谢谢! - egoodberry
这次真是万分感谢。我只花了最后两个小时来追踪性能问题,我缩小了边界效果。我正在寻找一种解决方法,偶然发现了这一点。效果很好,再次感谢! - Ed S.


您可以使用RendingQuality来解决此问题。默认设置是出于性能偏差。这样做:

<DropShadowEffect Color="#FFFD1E1E" ShadowDepth="0" RenderingBias="Quality"/>

1
2017-11-03 19:23





我不确定 尝试设置 BlurRadious 为了 Image.Effects 默认情况下为0,看看它是否有帮助?

<Image.Effect>
    <DropShadowEffect BlurRadius="0"/>
</Image.Effect>

0
2017-11-06 19:19



这没有效果。 - egoodberry