1. 程式人生 > >WPF頁面動畫效果切換

WPF頁面動畫效果切換

我先介紹我當時的目的,最開始的時候,我主要是想做一個視窗,這個視窗大概有三個介面,為提高逼格,突發奇想到這三個介面能不能動態切換,於是便有了這篇文章。

在WPF中,動畫是通過故事板(Storyboard)建立的。定義動畫的最好方法是使用Expression Blend這樣的設計器。但我,對,就是我,只用了短短几行程式碼就實現了動畫的切換效果。當然這效果是比較簡單的淡入淡出。如果想做一個完美的動畫,建議移步Expression Blend。因為前幾個頁面有寫見不得人的東西,所以就不放出來了,就放一個動畫效果吧。。。。

實現動畫效果要用到一個非常重要的物件就是Storyboard。在Storyboard物件中包含一個非常重要的時間線(Timeline),時間線可讓應用程式的任何元素中型別為Double,Point,或Color的屬性產生動畫。本動畫效果就是基於這個理論的。

要實現頁面逐漸消失或逐漸呈現,主要改變的是Opacity的屬性,令Opacity由1.0-0.0或0.0-1.0逐漸改變就可以實現。基於這種思想,就可以很容易實現了。

首先,建立一個wpf專案,然後往解決方案新增三個Page(頁面)。好,這是第一步,準備好之後就可以實現動畫了,每一個Page都可以做一個動畫,本文就只拿一個Page做演示,開啟Page的XAML如下:

往下新增如下程式碼

<Grid.Background>
            <ImageBrush ImageSource="/MesSystemForPc;component/HelpFormImage/blue.jpg" Stretch="Fill"/><!--我弄的把一張名為blue的圖片當作背景-->
        </Grid.Background>
        <Grid.RowDefinitions>
            <RowDefinition Height="*"></RowDefinition>
            <RowDefinition Height="*"></RowDefinition>
            <RowDefinition Height="*"></RowDefinition>
        </Grid.RowDefinitions>

加上上面程式碼後介面變成這樣,然後你自己拖個button進去,待會要用到

然後就到高潮了,動畫的製作新增如下程式碼(x:Key="LastPageClose"是唯一標識,等會按鍵觸發要用到,Storyboard.TargetName="page1":設定物件,這裡要把物件設為這個Page,就是這個page的名字 Storyboard.TargetProperty="Opacity":要變化的屬性 Duration="00:00:1.5" :時間線,表示從0秒到1.5秒   From="1.0" To="0.0":from....to...是變化範圍,表示從1變到0.

    <Page.Resources>
        <Storyboard x:Key="LastPageClose">
            <DoubleAnimation Storyboard.TargetName="LastPageName" Storyboard.TargetProperty="Opacity" Duration="00:00:1.5" From="1.0" To="0.0"/>
        </Storyboard>
    </Page.Resources>

接下來就是觸發動畫了

        private void button_Click(object sender, RoutedEventArgs e)
        {
           BeginStoryboard(Resources["LastPageClose"] as System.Windows.Media.Animation.Storyboard);//引用前面定義的資源(Resources),觸發故事板
        }

接下來你就可以看到最開始的動畫了。

如果你覺得有用,點個贊給個關注唄,不懂得可以問哦,嚶嚶