Silverlight中提供了StoryBoard实现动画,可是StoryBoard的性能实在不敢恭维,特别是动画很大的时候,计算机的CPU和内存的狂增,如此一来性能实在太差,在默认的动画效果中动画实现的效果是 根据每分钟 60帧(标准的是一分钟60帧,即一秒一帧来实现动画的呈现),不过这个过程我们不用担心因为是Silverlight自己计算好的来完成一个好的动画。废话不多说,开始看看有哪几种方式可以来对动画进行优化:

一、使用Object标签的maxFramerate属性

该属性的默认值就是60,当然也就是标准的,看看怎么设置

没错,就是这么简单,当value值越小(小于标准的60)动画的速度就越快(因为每一秒的帧数变大了),当值越大则速度越来越慢

    <param name="maxFramerate" value="15"/>

另外,为了达到好的性能,最好少使用透明度,已经动画的文本字体大小,以及使用WindowLess的设置显示Html。

二、硬件加速(GPU加速)

这个听起来很复杂,的确实现真正的GPU是很复杂的做法,不过不用担心,Silverlight中支持了我们对此功能的设置,非常简单

<param name="enableGPUAcceleration" value="true"/>

三、图形的缓存

图形的缓存存在一些限制,仅仅对以下几种操作有效:

1.ScaleTransform一个图形

2.RotateTransform一个图形

3.使用图形的Opacity属性

4.使用图形的Clip属性

首先介绍下,实现图形缓存加速的原理"GPU硬件加速是使用合成缓存将可视元素或元素的可视化树缓存为位图图面的行为。这可能为某些方案带来重大的性能改进。使用缓存合成,您可以在可视元素第一次呈现之后,将其缓存为位图。在将某个对象或对象树缓存为位图之后,当应用程序刷新时,它不再经过呈现阶段,而是只呈现缓存的位图。此类缓存位图交换可以充分利用用户 GPU 中提供的硬件加速功能,这种方法会大大改进某些方案的性能。"

实现缓存的方法:

设置元素的CacheMode属性,其中BitmapCache属性的重点,该值表示缓存中图形相对于原元素的比例,默认值为1,即和元素大小一致,数值越小CPU占用越少,内存占用越少,性能越好,反之则越坏。

           <Button x:Name="cmd" Content="I GROW and SHRINK." Canvas.Top="70" Canvas.Left="10">                 <Button.CacheMode>                     <BitmapCache RenderAtScale="5"></BitmapCache>                 </Button.CacheMode>                 <Button.RenderTransform>                     <ScaleTransform x:Name="scaleTransform"></ScaleTransform>                 </Button.RenderTransform>             </Button>

四、加速测试,在开发过程中可以测试是否起到了加速优化的效果 第一个属性为GPU的加速,后两个是用于在页面上显示当前使用的速率和缓存以及显示内存的一些信息。

            <param  name="EnableGPUAcceleration" value="true"/>             <param  name="enableCacheVisualization" value="true"/>             <param  name="enableFrameRateCounter" value="true"/>

下图显示为使用了三个属性后页面的测试效果:

第一个数字为当前动画的速率;

第二个数字为当前占用内存的字节数;

三四个数字不太理解这个意思。

转自:http://www.cnblogs.com/ListenFly/archive/2011/11/02/2233715.html

Silverlight中动画的性能浅析的更多相关文章

  1. ArcGIS API for Silverlight中专题地图的实现浅析

    原文http://www.gisall.com/html/32/7232-2418.html 专题地图是突出表现特定主题或者属性的地图.常见专题地图类型有唯一值渲染,分类渲染,柱状图,饼状图,点密度图 ...

  2. Silverlight & Blend动画设计系列十:Silverlight中的坐标系统(Coordinate System)与向量(Vector)运动

    如果我们习惯于数学坐标系,那么对于Silverlight中的坐标系可能会有些不习惯.因为在Silverlight中的坐标系与Flash中的坐标系一样,一切都的颠倒的.在标准的数学坐标系中,X轴表示水平 ...

  3. 通过硬件层提高Android动画的性能

    曾有许多人问我为什么在他们开发的应用中,动画的性能表现都很差.对于这类问题,我往往会问他们:你们有尝试过在硬件层解决动画的性能问题么? 我们都知道,在播放动画的过程中View在每一帧动画的显示时重绘自 ...

  4. CoreAnimation6-基于定时器的动画和性能调优

    基于定时器的动画 定时帧 动画看起来是用来显示一段连续的运动过程,但实际上当在固定位置上展示像素的时候并不能做到这一点.一般来说这种显示都无法做到连续的移动,能做的仅仅是足够快地展示一系列静态图片,只 ...

  5. CSS3中动画transform必须要了解的Skew变化原理

    transform是CSS3中比较安全的动画(对于性能来说),其中有一些动画属性,来执行不同的变化.今天我们来了解skew的变化原理. skew,其实使用的频率不是很高,当然也没有最低.但是往往,一直 ...

  6. Silverlight中的拖拽实现的图片上传

    原文 http://blog.csdn.net/dujingjing1230/article/details/5443003 在Silverlight中因为可以直接从系统的文件夹里面拖出来一个文件直接 ...

  7. 原生JavaScript中动画与特效的实现原理

    现如今,许多页面上均有一些动画效果.适当的动画效果可以在一定程度上提高页面的美观度,具有提示效果的动画可以增强页面的易用性. 实现页面动画的途径一般有两种. 一种是通过操作JavaScript间接操作 ...

  8. Silverlight中图片显示

    silverlight中显示一个图片有很多的中方法,xaml中的image控件或者自定编写程序来生成image控件. silverlight中显示的图片只能是Bitmap, JPG, PNG(64位颜 ...

  9. Silverlight & Blend动画设计系列十一:沿路径动画(Animation Along a Path)

    Silverlight 提供一个好的动画基础,但缺少一种方便的方法沿任意几何路径对象进行动画处理.在Windows Presentation Foundation中提供了动画处理类DoubleAnim ...

随机推荐

  1. Appium技术点之解决屏幕无法点击的情况————Python版本

    1.导入包: from appium.webdriver.common.touch_action import TouchAction 2.写代码 TouchAction(driver).pop(x= ...

  2. Nginx作为简单代理服务器(Windows环境)

    Nginx一个频繁的应用是作为代理服务器,由Nginx代理服务器接受客户请求,并将客户请求发送到应用服务器处理,接受应用服务器的响应,然后将响应发送给客户. 现在要做的一个应用场景就是当客户请求图片资 ...

  3. BPMN

    1.私有业务流程: 特定行业规则制度比如惠普生产线流程-针对业务人员 2.公有业务流程: 技术实现-针对流程开发人员 http://www.blogjava.net/RongHao/archive/2 ...

  4. std::string::npos mean

    std::string::npos 表示 no position, 没位置, 没找到

  5. Unity球形插值Slerp解析

    Unity球形插值,官方有个太阳升降的例子: http://docs.unity3d.com/ScriptReference/Vector3.Slerp.html 一开始主观认为这个球形插值Slerp ...

  6. Gradle用户指南(章8:依赖关系管理基础)

    章8:依赖关系管理基础 本章将介绍一些gradle依赖关系管理的基础 什么是依赖关系管理? 简略的说,依赖管理是由两部分组成的.首先,gradle需要知道你要构建或者运行的项目,以便找到它们.我们将这 ...

  7. 【练习】ORACLE统计信息--直方图

    ①创建表tSQL> create table t as select * from dba_objects; Table created. --收集直方图 SQL> exec dbms_s ...

  8. struts2文件上传大小限制问题小结

    一:首先看一下程序执行中出现的对应报错信息,如下所示: [WARN ] 2015-03-03 15:31:11 :Unable to parse request org.apache.commons. ...

  9. mysql 连接命令 表管理 ,克隆表,临时表,字符串属性,设定语句间的分隔符

    连接和断开连接mysql -h host -u user -p (即,连接的主机.用户名和使用的密码).断开输入QUIT (或\q)随时退出: 表管理克隆表注意:create table ... li ...

  10. 图解CISCO 3550忘记密码解决方法

    图解CISCO3550忘记密码解决方法 Cisco网络设备密码忘记怎么初始出厂默认值?这时网友常常会提出的问题,怎么解决,有人说啦,去百度去谷歌一下不就行啦,然而这对初学者任是个挑战,虽然步骤只有简单 ...