代码改变世界

WPF:关于Animation的CPU消耗

2012-06-13 20:38  木木子  阅读(2001)  评论(3编辑  收藏  举报

当前开发的项目中,CPU消耗一直维持在20-30%,再加上内存泄露这事儿,真是很头疼的事。项目组内的同事都为这事忙活着。

项目中的主要展示界面是用WPF完成的,有涉及到动画,主要是有几个滚动条,来标记这几个模块正在进行。刚开始,用了GIF来简单的显示,用的也挺好的。之后在内存泄露这事件中,被做排查工作的同事揪了出来:一直在耗内存啊!然后,用了WPF的Animation模仿了GIF的效果。显示效果之类的都没有问题,但CPU的使用高达30%!!!很吃惊,为什么简简单单的滚动条动画这么吃CPU呢。

好在,我这人很固执。开始一边度娘一边谷哥。发现了这么一篇简短的文章:“WPF: Reducing CPU consumption for animations”.文章中提到:WPF的Animation默认使用60帧一秒,相当的高啊,这就是吃CPU的原因了。

简单的代码实现为:(一般放在应用程序的开始函数中)

Timeline.DesiredFrameRateProperty.OverrideMetadata(
            typeof(Timeline),
            new FrameworkPropertyMetadata { DefaultValue = 20 }
            );