首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> .NET 網頁程式設計 >> 關於.NET

WPF 程式碼建立動畫:本地動畫與 PersistentAnimations 實作

     編輯:關於.NET

為什麼用程式碼建立動畫?

  • XAML 靜態宣告無法適應運行時環境(如視窗大小決定動畫參數)。
  • 程式碼可計算動態屬性值,提供更大彈性。

本地動畫:跳過 Storyboard 直接套用

不需 Storyboard 與 SetterTimeline,直接將動畫加入目標元素的 PersistentAnimations 集合,以目標屬性為索引:

<Ellipse x:Name="theEllipse" Width="50" Height="100" Fill="Red" />

DoubleAnimation widthAnimation = new DoubleAnimation();
widthAnimation.By = 100;
widthAnimation.Duration = new Duration(TimeSpan.FromSeconds(2));
theEllipse.PersistentAnimations[Ellipse.WidthProperty] = widthAnimation;

Clock clock = theEllipse.PersistentAnimations.GetClock(Ellipse.WidthProperty);
clock.Controller.Begin();
  • PersistentAnimations 直接對應目標屬性,無需指定 TargetName/Path。
  • 取得 Clock 後透過 Controller 控制播放(Begin、Pause、Stop、Seek...)。
  • 適合簡單、一次性、動態計算參數的動畫。

對比:Storyboard vs 本地動畫

特性Storyboard (XAML/程式碼)本地動畫 (程式碼)
目標指定SetterTimeline + TargetName/PathPersistentAnimations[DP]
多屬性協調ParallelTimeline/SequenceTimeline需自行協調多個 Clock
觸發器整合EventTrigger 自動啟動僅程式碼控制
動態參數困難容易

選擇建議:複雜協調、樣式/模板整合、觸發器驅動 → Storyboard;簡單、動態、一次性 → 本地動畫。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved