c#

WPF阴影设置及设置导致控件模糊问题

2016-08-22  本文已影响74人  么么gou的偷

WPF 中设置阴影后
<code>
<Canvas.Effect>
<DropShadowEffect BlurRadius="7" ShadowDepth="0"/>
</Canvas.Effect>
</code>

其中的BlurRadius为阴影的模糊程度,ShadowDepth为阴影的深度。可以在自定义控件右击,选择Blend设计

Paste_Image.png

下图为Blend设计器中找到阴影设置的界面


设置为0和7就相当于光线从垂直上方射下,模糊度为7,此时这个Direction是没有用的。

但是当你设置下面这个的时候,Direction就有用了,表示为从角度315的方向射过来,0度角为从左到右


Paste_Image.png

此处可以看到这个阴影

Paste_Image.png

调整Direction为0

Paste_Image.png

但是当你用完阴影之后会有个问题。就是阴影会导致控件模糊。后来自己网上找了下发现。
UserLayoutRounding为False,导致控件布局相对屏幕若不是整数则不会四舍五入,导致边缘模糊。

所以在mainwindow.xaml中加入UseLayoutRounding="True";就可以了
1)UserLayoutRounding为False,导致控件布局相对屏幕若不是整数则不会四舍五入,导致边缘模糊。
2)SnapsToDevicePixels默认为false, 为true可以让元素像素级对齐。

UIElement.UseLayoutRounding 属性
获取或设置一个值,该值确定对象及其可视化子树的呈现是否应使用将呈现与整像素对齐的舍入行为。(一般在容器元素上设置, 发生在Measure&Arrange期间)

若是自定义控件在CS文件中用new方式最好把控件大小设置大个5的宽度和高度,否则阴影无法显示。

上一篇 下一篇

猜你喜欢

热点阅读