Pat*_*lug 39
自从我提出这个问题后,我在这个领域获得了更多的经验,我将自己回答这个问题.我的经验来自WPF思维导图应用程序NovaMind - 我们最近为NovaMind Platinum中的Presenter功能做了很多动画:-)
有关优化WPF应用程序性能的MSDN部分提供了有关编写WPF应用程序时的一般注意事项的一些有用信息:
http://msdn.microsoft.com/en-us/library/aa970683.aspx
这里有一些我发现特别有用且与动画有关的部分:
CompositionTarget.Rendering事件导致WPF连续动画.如果您使用此活动,请抓住每次机会.
使用"画笔"设置元素的"填充"或"笔触"时,最好设置"Brush.Opacity"值,而不是设置元素的"不透明度"属性.修改元素的Opacity属性可能会导致WPF创建临时曲面.
您可以更新Transform而不是将其替换为RenderTransform属性的值.在涉及动画的场景中尤其如此.通过更新现有的Transform,可以避免启动不必要的布局计算.
这是我通过反复试验所学到的:
我还听说通过在容器中覆盖OnRender然后使用drawingContext渲染它们而不是直接将它们添加到可视树中来渲染许多小对象会更快.在实践中,这对我的场景没有任何影响(当渲染大约300个椭圆几何时),但在某些情况下它可能会有所帮助.这个理论听起来很扎实
最后,我发现使用WPF内置的动画类太麻烦了,并且使用动画库的弱者更加有趣和成功:Artefact Animator.说真的,试一试.(它也适用于Silverlight)它应该是动画(代码中)的样子.
不过,一切都不是彩虹和独角兽.我仍然发现在更高分辨率下运行全屏时无法创建真正流畅的动画.在我的问题中更多关于如何知道为什么动画口吃? - 我将不胜感激.
欢呼,祝你好运,如果你有一些很酷的东西展示,请告诉我:)
归档时间: |
|
查看次数: |
9081 次 |
最近记录: |