[性能技巧] 使用系统阴影而不是你自己
关于阴影和性能的一个快速简单的技巧
今天,我将向大家分享一个关于阴影和性能的快速且简单的技巧。
在一个我最近参与的项目中,我们告诉设计师不要使用 BitmapEffects,因为它们会严重影响性能。他决定通过复制每个形状并使其看起来像阴影来自己创建阴影(设计师的魔法,巫术之类的……)。令我惊讶的是,这样做也会影响性能!
还有 3.5 SP1 框架自带的着色器效果,但它们仅在 Vista 或更高版本的平台上可用,并且它们的性能取决于你的显卡。
但是,我们还有另一张王牌:系统阴影,即使在软件渲染下也相当快速!
使用它非常简单
- 将
PresentationFramework.Aero
引用添加到你的项目中 - 添加以下 XML 命名空间
clr-namespace:Microsoft.Windows.Themes;assembly=PresentationFramework.Aero”
- 使用此命名空间提供的
SystemDropShadowChrome
元素!
但是有一个缺点:你只能创建方形阴影。但是,你仍然可以使用 CornerRadius
属性来创建类似圆形的阴影。
这是一个简单的 XAML 代码示例
<UniformGrid
xmlns:shadows="clr-namespace:Microsoft.Windows.Themes;
assembly=PresentationFramework.Aero"
Columns="2">
<shadows:SystemDropShadowChrome Margin="25">
<ListBox>
<ListBoxItem Content="One item" />
<ListBoxItem Content="Another item" />
<ListBoxItem Content="Another third item" />
</ListBox>
</shadows:SystemDropShadowChrome >
<shadows:SystemDropShadowChrome Margin="25"
CornerRadius="800" Width="100" Height="100">
<Ellipse Stroke="Black" Fill="White" />
</shadows:SystemDropShadowChrome>
</UniformGrid>