代码改变世界

WP7 App性能优化(12):检测应用程序性能(Ⅴ)

2010-12-30 23:31  MagicKing110  阅读(949)  评论(1编辑  收藏  举报

透视填充率示例

该示例展示了平面投影、透视转换对应用程序性能的影响。设计师创建的XAML经常会包含很多的透视转换用以创建漂亮的视觉效果,但是这会影响应用程序的性能。该示例演示了透视和动画的缓存行为。不带动画的透视转换会自动缓存,因而添加动画不会进一步影响性能。然而,为不带透视转换的矩形添加动画则会影响性能。

下载示例代码

如果你运行此示例,你会看到四个按钮:

  • Add-添加一个随机的矩形
  • Dlt-删除最近添加的一个矩形
  • Persp-切换是否对矩形应用透视转换的开关
  • Animate-切换矩形是否加动画效果的开关

要测试此示例,尝试以下操作:

  • 添加几个矩形直到中间小方块的动画开始卡屏,然后点击透视按钮切换。此时会看到卡屏现象消失了,因为矩形不再缓存了。矩形和页面上的按钮及文本共享一个单独的图形表层。知道应用了透视,Silverlight自动为每个矩形放置了T:System.Windows.Media.BitmapCache,这就增加了一个会影响填充率的表层。
  • 添加几个矩形直到中间小方块的动画开始卡屏。单击Animate按钮,注意到卡屏程度并没有增加。因为不带动画的透视已经自动缓存了,所以在其上添加动画不会增加任何新创建的纹理。比较在不带透视的矩形上切换动画的情况。如果除了小方块外没有应用任何透视和动画,那么你可以添加任意多的矩形也不会使方块的动画卡屏。因为这些矩形都没有缓存,他们仍然和按钮及文本共享同一个表层。然而,一旦对这些矩形应用了动画,他们就会被自动赋予一个位图缓存,那么就必须为每一个矩形的图形区域付出相应的填充率。

Ff967560.9fcae103-a309-455a-87ed-b805cee783f7(en-us,VS.92).png