WPF實現(xiàn)動畫效果(三)之時間線(TimeLine)
WPF動畫效果系列
WPF實現(xiàn)動畫效果(二)之From/To/By 動畫
WPF實現(xiàn)動畫效果(三)之時間線(TimeLine)
WPF實現(xiàn)動畫效果(五)之關(guān)鍵幀動畫
正文
時間線(TimeLine)表示時間段。 它提供的屬性可以讓控制該時間段的長度、開始時間、重復(fù)次數(shù)、該時間段內(nèi)時間進度的快慢等等。在WPF中內(nèi)置了如下幾種TimeLine:
AnimationTimeline :前面已經(jīng)介紹過,主要用于屬性的過渡,這種是最常見的動畫。
MediaTimeline:用于控制媒體文件播放的時間線。
ParallelTimeline:ParallelTimeline 是一種可對其他時間線進行分組的時間線,可用于實現(xiàn)較復(fù)雜的動畫。
Storyboard :一種特殊的 ParallelTimeline,可為其包含的時間線提供對象和屬性目標信息。在XAML中經(jīng)常使用到它,在后面再專項介紹。
常用屬性:
Duration: 動畫播放時間長度
RepeatBehavior: 重復(fù)行為(重復(fù)次數(shù))
FillBehavior: 動畫結(jié)束后的行為(保持動畫的結(jié)束狀態(tài)或恢復(fù)到初始狀態(tài))
AutoReverse: 按相反的順序重復(fù)播放動畫
SpeedRatio: 動畫播放速率(用于加速或減速播放)
BeginTime: 動畫播放的起始時間
時間線控制:
到目前為止,我們雖然能創(chuàng)建并執(zhí)行動畫,但僅僅能通過UIElement. BeginAnimation執(zhí)行開始動畫,還無法對動畫進行交互控制。在WPF中,還提供了一系列對時間線的控制操作,如:開始、停止、暫停等。它們是通過Clock對象的Controller屬性來進行的。下面就是一個簡單的示例:
var widthAnimation = new DoubleAnimation() { From = 0, To = 320, Duration = TimeSpan.FromSeconds(5), }; var clock = widthAnimation.CreateClock(); button.ApplyAnimationClock(WidthProperty, clock); await Task.Delay(3000); clock.Controller.Pause();
從這個代碼中可以看出,控制時間線的一般步驟如下:
通過CreateClock函數(shù)創(chuàng)建時鐘對象Clock
通過UIElement. ApplyAnimationClock函數(shù)啟用支持時鐘控制的動畫
使用Clock. Controller的方法控制動畫
更加詳盡的例子可以參看MSDN文檔:以交互方式控制時鐘
除了在Controller中提供了交互方法以為,Clock對象還提供了一系列屬性和事件方便我們的獲取狀態(tài),常見的有:
CurrentProgress 當(dāng)前進度
CurrentState 當(dāng)前狀態(tài)
CurrentTime 當(dāng)前播放時間
IsPaused 是否處于暫停狀態(tài)
NaturalDuration 動畫持續(xù)時間
也提供了一系列事件來主動通知狀態(tài)的變更,常用的事件為:
Completed:動畫結(jié)束時的通知
CurrentGlobalSpeedInvalidated 播放速率變化時的通知,
CurrentStateInvalidated 狀態(tài)變化時的通知
CurrentTimeInvalidated 播放時間變化時的通知
RemoveRequested 動畫移除時候的通知
這幾個事件在TimeLine對象中也是有的,這樣,在不使用Clock對象的時候也可以或者這些狀態(tài)的變化。 如果想更加收入的理解計時系統(tǒng)的工作方式,可以看看動畫和計時系統(tǒng)概述一文。
另外,有的特殊的TimeLine對象,如Storyboard本身就封裝了動畫的控制相關(guān)內(nèi)容,可以直接對動畫進行控制。關(guān)于Storyboard需要介紹的內(nèi)容比較多,后面再單獨寫文章介紹。
參考資料:
到此這篇關(guān)于WPF實現(xiàn)動畫效果之時間線(TimeLine)的文章就介紹到這了。希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
C# SaveFileDialog與OpenFileDialog用法案例詳解
這篇文章主要介紹了C# SaveFileDialog與OpenFileDialog用法案例詳解,本篇文章通過簡要的案例,講解了該項技術(shù)的了解與使用,以下就是詳細內(nèi)容,需要的朋友可以參考下2021-08-08