防止矩形/字体被缓存/模糊WPF

时间:2014-11-03 00:23:49

标签: c# wpf

我有一个项目,我正在使用Canvas,Rectangle和一些标签来创建各种UI元素。我有一个效果,当我滚动这些元素时,它们会略微放大,以向用户指示控件是否存活并将响应输入。然而,我遇到的问题是这些元素似乎被缓存为位图,当它们向上扩展时,它们都会模糊。 Canvas中的矢量元素,文本等

Blurring in WPF

请注意下面的“统计”按钮和“过滤器设置”按钮(大小相同)之间的区别。

我只发现了一些修复此问题的建议,似乎都没有起作用。第一种是将主窗口中的BitmapScalingMode设置为Fant。

xmlns:Media="clr-namespace:System.Windows.Media;assembly=PresentationCore"
Media:RenderOptions.BitmapScalingMode="Fant"

第二个是以编程方式为单个项目做同样的事情,但问题仍然存在。

注意,第三个建议是在XAML中设置缩放模式并增加RenderAtScale值,但这再次没有效果。

<Rectangle.CacheMode>
     <BitmapCache EnableClearType="true" RenderAtScale="4"/>
</Rectangle.CacheMode>

想知道是否有人知道如何解决这个问题。提前谢谢。

1 个答案:

答案 0 :(得分:0)

在做了一些挖掘后,我发现答案是另一个答案。通常在这种情况下,我只会删除我的问题而不是回答,但这种情况与Q和A linked here类似,并不完全相同。

来自链接的答案:

  

有一天,当我使用有边框的边框时,我遇到了一个问题   DropShadowEffect已应用。结果就是那里面的所有文字   边界非常模糊。文本是否在里面并不重要   其他面板或直接在边框下 - 任何文本块   已应用效果的父级的孩子似乎受到影响。

然而,事实证明,文本并不是唯一受影响的事情。我在这些元素上放置了一个非常温和的阴影,它使一切变得模糊,包括矢量艺术。建议的解决方案是创建单独的元素,这些元素位于要保持清晰的元素层次结构之外,然后将效果应用于这些元素。