Silverlight中动画的性能浅析
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"/>
下图显示为使用了三个属性后页面的测试效果:
第一个数字为当前动画的速率;
第二个数字为当前占用内存的字节数;
三四个数字不太理解这个意思。
转载于:https://www.cnblogs.com/ListenFly/archive/2011/11/02/2233715.html
Silverlight中动画的性能浅析相关推荐
- Silverlight 中的利萨茹动画
Silverlight 中的利萨茹动画 下载代码示例 我们通常会认为软件比硬件更加灵活,功能也更加多样. 在很多情况下确实是这样,因为硬件经常囿于一种配置,而软件可以在重新编程后执行完全不同的任务. ...
- 一步一步学动画[1]:Silverlight中Animation的应用
1.Animation简介 动画是快速播放一系列图像(其中每个图像与下一个图像略微不同)给人造成的一种幻觉.大脑感觉这组图像是一个变化的场景.在电影中,摄像机每秒钟拍摄许多照片(帧),便可使人形成这种 ...
- Silverlight中生动的火柴人动画
Silverlight中生动的火柴人动画 nikola开发了一款可以浏览bvh动画(3DMAX中的一种动画脚本格式,可以快速方便的帮助制作人物动作的动画)Silverlight 应用. 你可以直接看到 ...
- WPF/Silverlight中MVVM运用
随着WPF/Silverlight等技术的出现,一种新的模式出现在大家面前,那就是MVVM,提到这个模式,大家也许感觉很迷惑,也许会不屑于故,也许你会说我现在做项目都形成了自己的框架了,为什么还要花费 ...
- Silverlight Blend动画设计系列六:动画技巧(Animation Techniques)之对象与路径转化、波感特效...
原文:Silverlight & Blend动画设计系列六:动画技巧(Animation Techniques)之对象与路径转化.波感特效 当我们在进行Silverlight & Bl ...
- Silverlight Blend动画设计系列四:倾斜动画(SkewTransform)
Silverlight中的倾斜变化动画(SkewTransform)能够实现对象元素的水平.垂直方向的倾斜变化动画效果.我们现实生活中的倾斜变化效果是非常常见的,比如翻书的纸张效果,关门开门的时候门缝 ...
- 用silverlight做动画-相机
用silverlight做动画-相机 适合初学者学习 做一个相机的动画 和做flash动画一样,准备好素材 将素材放入项目中 开始正式制作前为了方便以后重用,就把这个动画做成usercontrol(和 ...
- Silverlight中的拖拽实现的图片上传---1
在Silverlight中因为可以直接从系统的文件夹里面拖出来一个文件直接放到浏览器中,我在想使用这个功能来做成图片上传(或者文件上传),这样的用户体验将会是非常好的. 传统的上传都是打开对话框,选择 ...
- Silverlight中的ControlTemplate(2)
Silverlight中的ControlTemplate介绍了ControlTemplate的相关的几个知识,这篇继续介绍剩余的内容 上文我们已经为Tooltip的ControlTemplate添加了 ...
最新文章
- K近邻算法KNN的简述
- 2022 专属程序员的桌面必备单品!
- 如何让项目一步步走向灭亡
- gstreamer 获取帧数据_Android App卡顿率(顺滑度、顺滑度)并整理数据
- jvm性能调优实战 - 29使用 jstat 摸清线上系统的JVM运行状况
- C++ 备忘录 ( 持续更新中... )
- Cpp 对象模型探索 / new 运算符内部调用过程分析
- 写一个 panic blame 机器人
- Redis PHP连接操作
- android绘制环形进度_Android动态自定义圆形进度条
- 数据结构:栈和列之如何用两个队列实现一个栈?两个栈实现一个队列?
- 数据结构-线性表之带头结点的双向循环链表
- PyTorch入门-语言模型
- ubuntu同时装有MXNet和Caffe框架
- 募资补充粮草、成交额翻倍增长,想翻身的国美开始造势
- MySQL事务及隔离级别详解
- web版文件管理系统_临沂管家婆母婴版进销存软件产品特色
- 渗透测试方法论、流程 及NMAP简介
- JS 模拟手机页面文件的下拉刷新
- Host Windows 配置
热门文章
- java 开发环境 列表_Java 开发环境配置
- R︱Softmax Regression建模 (MNIST 手写体识别和文档多分类应用)
- python安装包,使用镜像安装
- 源码分析 Mybatis 的 foreach 为什么会出现性能问题
- 语言学博士、Kaggle数据分析师,她说:读研不是必选项,这4项技能学校不教
- 阿里云虚拟主机的使用,附幸运券领取
- 使用JavaScript在Canvas上画出一片星空
- 无限路由器故障排查细则
- Linux设备驱动简析—PC重启源码分析
- Visual Studio Tip 之 如何查看隐形的空格(white space)和制表符(tab)