我正在尋找任何有關WPF動畫的最佳做法或指導方針。尤其是關於性能考慮的信息Wpf動畫最佳做法
回答
自從我提出這個問題後,我在這個領域獲得了更多的經驗後,我會自己回答。我的經驗來自於WPF思維導圖應用NovaMind工作 - 我們在NovaMind鉑金做了很多動畫最近我們Presenter feature :-)
的MSDN節上優化WPF應用程序性能有大約一般考慮一些有用的信息寫入時WPF應用程序:
http://msdn.microsoft.com/en-us/library/aa970683.aspx
這裏有一些位,我發現非常有用和相關的動畫:
CompositionTarget.Rendering事件會導致WPF持續動畫。如果你使用這個事件,請在每個機會上分離它。
當您使用畫筆設置元素的填充或筆畫時,最好設置Brush.Opacity值而不是設置元素的「不透明度」屬性。修改元素的不透明度屬性可以使WPF創建一個臨時表面。
您可能能夠更新轉換而不是將其替換爲RenderTransform屬性的值。在涉及動畫的場景中尤其如此。通過更新現有的變換,可以避免啓動不必要的佈局計算。
下面是我通過不斷摸索掌握:
- 說,你有幾個要素與影響,如BlurEffect應用。這是方式更快地將效果應用於這些元素的容器,而不是元素本身。儘管效果是硬件加速的,但WPF似乎並不善於處理一些帶有效果的小項目。 - 如果不需要相同的模糊半徑,並且無法將它們組合到應用了效果的容器中,則將元素呈現爲位圖(以軟件形式)然後爲位圖製作動畫(如果可能) 。對物體產生影響(或不透明度)可快速殺死動畫時的表現。
- 設置畫筆上的不透明度而不是元素(如上所述)在動畫對象時會產生巨大的性能差異。
- 保持視覺效果的數量減少。即使使用上述技巧,動畫化大量粒子也很困難。在這種情況下,您可能需要恢復爲WriteableBitmap。
我也聽說通過在容器中重寫OnRender來呈現許多小對象,然後使用drawingContext呈現它們,而不是直接將它們添加到可視化樹中,這樣會更快。實際上,在我的場景中(在渲染大約300個橢圓幾何時)沒有任何區別,但在某些場景中可能會有所幫助。這個理論聽起來很可靠
最後,我發現WPF中內置的動畫類過於繁瑣,並且使用動畫庫的劣勢獲得更多樂趣和成功:Artefact Animator。真的,試試看吧。(它也可用於Silverlight)這是什麼動畫(在代碼中)應該是這樣的。
雖然不是彩虹和獨角獸。在高分辨率下運行全屏時,我仍然發現無法創建真正流暢的動畫。更多關於我的問題How to know why an animation stutters? - 我將不勝感激任何輸入。
歡呼,祝你好運,如果你有什麼酷炫的東西,讓我知道:)
- 1. 動畫最佳做法
- 2. WPF XAML - DataTriggers或ValueConverters?最佳做法
- 3. WPF異步驗證的最佳做法?
- 4. 反應本地動畫示例違反最佳做法?
- 5. iPhone使用UIImageView的大量動畫的最佳做法
- 6. HTML5畫布 - 移動物體的最佳做法
- 7. RabbitMQ - 最佳做法
- 8. 最佳做法response.getOutputStream
- 9. estimatedHeightForRowAtIndexPath最佳做法
- 10. 最佳做法applicationDidEnterBackground
- 11. 最佳做法UIScrollView
- 12. ActionListener最佳做法
- 13. CLLocationManager最佳做法
- 14. 做畫布動畫時最佳FPS是多少?
- 15. JavaMail編程最佳或最佳做法
- 16. django動態導航的最佳做法?
- 17. 連接活動的Android最佳做法
- 18. 自動登錄最佳做法
- 19. 動畫wxDC塗料的最佳方法
- 20. 最好的辦法做翻轉動畫
- 21. 類的最佳做法
- 22. Ember ArrayProxy的最佳做法
- 23. UIViewController最佳做法 - 加載
- 24. C#繼承最佳做法
- 25. SharePoint列表最佳做法
- 26. 以最佳做法登錄?
- 27. Rails的最佳做法
- 28. 類別最佳做法
- 29. Sqlite的最佳做法Android
- 30. 最佳做法與MySQL