WPF中的動畫——(二)From/To/By 動畫(二) WPF中的動畫——(二)From/To/By 動畫

咱們所實現的的動畫中,很大一部分是讓一個屬性在起始值和結束值之間變化,例如,我在前文中實現的改變寬度的動畫:html

    var widthAnimation = new DoubleAnimation()
    {
        From = 0,
        To = 320,
        Duration = TimeSpan.FromSeconds(2),
        RepeatBehavior = RepeatBehavior.Forever,
    };

    button.BeginAnimation(WidthProperty, widthAnimation); windows

這個動畫實現了寬度在0和320之間的變化,因爲寬度是一個double型,所以這裏用的是DoubleAnimation。對於一些其它常見的類型,如Byte、Color、Int3二、Size、Point等,在System.Windows.Media.Animation下都有相應的過渡動畫實現,命名規則是"數據結構類型+Animation"這裏就很少介紹了。 數據結構

這種過渡動畫通常成爲From/To/By 動畫,是由於它們是經過From、To、By三個屬性來決定了目標屬性的起始值和結束值。首先咱們來看下這三個屬性表明的意義: post

  • From: 起始值,在動畫開始的時候將目標屬性設置爲該值
  • To: 結束值,動畫結束是目標屬性爲改值
  • By: 偏移值:動畫結束的時候目標屬性爲"初始值+偏移值"

很明顯,To和By的效果是有可能衝突的。實際上,這三個屬性都是可選設置的,而且在設置了To和By的時候,是會忽略By屬性的。下面我再經過一些簡單的場景介紹一下這三個屬性如何組合使用。 動畫

  • 由0 變爲 320:        From = 0, To = 320
  • 由初始值變爲320:   To = 320
  • 由0變爲初始值:       From = 0
  • 由0增大150:          From = 0, By = 150
  • 由初始值增大150:   By = 150

看了這幾個用例後,相信你們已經大體能明白這三個參數的使用方法。 url

 

爲何這麼設計 設計

初一看上去,這種From、To、By的三參數設計得過於複雜,徹底能夠用From和To兩個參數能夠肯定,須要用到By的地方經過運算獲取。 甚至From和To也能夠強制要求賦值,這樣就不會出現From和To都不賦值的這種非法狀況了。爲何要這麼設計呢? 我以爲有兩個緣由: htm

  1. 這種比較靈活的方式能夠方便將動畫和具體的對象分離出來,能夠方便複用和組合。
  2. 方便在XAML中使用。若是像我上述的那樣的作法,不少時候須要取對象的初始值,用XAML編寫複雜的動畫時,這種操做並非是很方便。

 

時間控制 對象

這裏只介紹瞭如何設置過渡動畫的起始狀態和終止狀態,動畫還有一個比較重要部分是時間控制,如動畫時間段的長度、開始時間、重複次數、進度的快慢,結束通知等。這些都是在其基類TimeLine中控制的,下一章將單獨對其介紹。 blog

 

參考資料

http://msdn.microsoft.com/zh-cn/library/aa970265(v=vs.110).aspx

相關文章
相關標籤/搜索