1. 程式人生 > >WPF 動畫

WPF 動畫

mat ont item 元素 logs 所有 沒有 方式 連續

  1. 動畫的基礎

動畫是WPF的核心部分,隨著對窗體程序體驗的要求增加,動畫表現越來越重要,WPF天生就是基於圖形的,所以天生具有動畫的基因,我們常說的動畫,無非就三種方式實現:

  1. 逐幀動畫

逐幀動畫是一種常見的動畫形式(Frame By Frame),其原理是在"連續的關鍵幀"中分解動畫動作,也就是在時間軸的每幀上逐幀繪制不同的內容,使其連續播放而成動畫。這就和我們的動畫片的原理差不多,假如做過FLASH的人,估計對這個比較熟悉。

技術分享

  1. 線性插值

線性插值,也就是給定初始點集合和終止點集合,然後給定一個映射關系。對一一對應的點的位置,即對坐標、尺寸等進行線性插值的動畫。

技術分享

  1. 路徑動畫

路徑動畫也屬於線性插值的一種特殊類型,只是其明確指定了一個運行路徑

  1. 時間軸Timeline

Timeline翻譯過來就是所謂的時間軸,每個動畫,都是在一定時間區間內運行,這個時間區間就是時間軸,時間軸能夠控制動畫的運行速度和運行長度等特征。

  1. WPF簡單動畫

WPF比較簡單的動畫,就是線性插值動畫,其主要是通過改變元素的依賴屬性實現的動畫,但是這裏要註意一個問題,就是實現修改依賴屬性的動畫,需要註意這些屬性所對應的類型動畫類,例如Width屬於雙精度類型,那麽對應的動畫類即為DoubleAnimation。

所以有上面這個限制,就決定了,不是所有的依賴屬性都可以實現動畫,只有對應類型的動畫類,才可以實現動畫,比如我們常用的HorizonalAlignment是一個枚舉類型,其沒有對應的動畫類,那麽就無法形成對應的動畫。

  1. Animation

WPF中所有的動畫類都繼承自Animation,比如ColorAnimation和DoubleAnimation等,一般插值動畫的命名規則就是"類型名+Animation"的方式,但是逐幀動畫其主要的命名方式是"類型名+AnimationUsingKeyFrames"的形式進行命名。路徑動畫的主要命名規則是"類型名+AnimationUsingPath"。我們查看MSDN的System.Window.Media.Animation命名空間,可以知道WPF的動畫中類繁多,如何能系統的學習這麽多呢,其實只要我們掌握一個簡單的DoubleAnimation,其他的基本的大同小異,記住一些基本的區別即可。因為XAML對泛型的支持不是很好,所以會造成這麽多功能比較相似的動畫類。我們先看看動畫類的集成關系:

WPF 動畫