我拿了这个WPF-WPF 2008 ScreenSaver模板,开始做一个新的屏幕保护程序。我有一些使用winForms (GDI+)屏幕保护程序的经验,所以我有点迷上了WPF。
现在,我想知道,在选择更高的N值时,我能做些什么来改善图形的平滑性吗?我可以“冻结”“东西”之前,我的椭圆和“不冻结”“某事”,当我完成?或者我还能做些什么?
并不是说我会对提到的性能下降太挑剔-因为当N==50时,一切正常运行。即使椭圆都在同一个位置(很多透明的东西),也没有任何问题。
发布于 2009-03-27 04:56:29
您是否尝试过在CompositionTarget.Rendering事件中而不是在计时器中呈现?当我使用渲染事件和我自己的双缓冲时,我在3D屏幕保护程序中获得了令人印象深刻的性能。(参见http://stuff.seans.com/2008/08/21/simple-water-animation-in-wpf/、http://stuff.seans.com/2008/08/24/raindrop-animation-in-wpf/和http://stuff.seans.com/2008/09/01/writing-a-screen-saver-in-wpf/ )
发布于 2009-03-16 12:06:37
一旦被冻结了,就不可能解除冻结(尽管在默认情况下,对象的副本是unfozen )。默认情况下,双缓冲在WPF中也是启用的,所以您不能在这里获得。
提高性能的一种方法是使用几何对象 (如椭圆几何 ),而不是形状(如果您不需要对所有事件进行处理),因为这些事件都比较轻。
我还发现了这篇MSDN文章优化性能:二维图形与成像,它建议使用CachingHint可能会有帮助,还有其他一些提示。
最后,确保您正在使用最新的service,因为它具有许多性能改进( 在此概述 )。
https://stackoverflow.com/questions/650038
复制相似问题