65.9K
CodeProject 正在变化。 阅读更多。
Home

[性能技巧] 使用系统阴影而不是你自己

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.75/5 (7投票s)

2010 年 4 月 28 日

Ms-PL
viewsIcon

21573

关于阴影和性能的一个快速简单的技巧

今天,我将向大家分享一个关于阴影和性能的快速且简单的技巧。

在一个我最近参与的项目中,我们告诉设计师不要使用 BitmapEffects,因为它们会严重影响性能。他决定通过复制每个形状并使其看起来像阴影来自己创建阴影(设计师的魔法,巫术之类的……)。令我惊讶的是,这样做也会影响性能!

还有 3.5 SP1 框架自带的着色器效果,但它们仅在 Vista 或更高版本的平台上可用,并且它们的性能取决于你的显卡。

但是,我们还有另一张王牌:系统阴影,即使在软件渲染下也相当快速!

使用它非常简单

  1. PresentationFramework.Aero 引用添加到你的项目中
  2. 添加以下 XML 命名空间
    clr-namespace:Microsoft.Windows.Themes;assembly=PresentationFramework.Aero”
  3. 使用此命名空间提供的 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>

Shadows screenshot

Shout it kick it on DotNetKicks.com
© . All rights reserved.