相信許多新人對WPF的動畫十分感興趣,但又不知道從何學起。在此,我通過幾個簡單的例子給大家簡單的講一下WPF的一種動畫。
首先要引用命名空間:
using System.Windows.Media.Animation;
假設在窗體內新建一個按鈕:
Grid grid=new Grid();//新建一個Grid布局容器 this.Content = grid; Button mybutton=new Button(); mybutton.Content="Click me!";//新建按鈕 mybutton.Width=60; mybutton.Height=30; mybutton.Click += mybutton_Click;
grid.Children.Add(mybutton);
按鈕單擊事件:
Button mybutton = (Button)sender; DoubleAnimation myani = new DoubleAnimation(); //實例化一個DoubleAninmation對象 myani.From = mybutton.Width;//開始值 myani.To = mybutton.Width+100;//結束值 myani.Duration = TimeSpan.FromSeconds(3); //所用時間 Storyboard.SetTarget(myani, mybutton); //設置應用的對象 Storyboard.SetTargetProperty(myani, new PropertyPath("Width")); //設置應用的依賴項屬性 Storyboard s = new Storyboard();// 實例化一個故事板 s.Children.Add(myani);//將先前動畫添加進來 s.Begin(); //啟動故事版
現在你可以運行一下試試,發現Button在2秒之內Width增加了100.
至此,一個簡單的動畫就完成了。當然,你還可以處理Story的Completed屬性,創建一個恢復原狀的動畫,只需要忽略To屬性:
ClockGroup clockgroup = (ClockGroup)sender; //獲取當前的ClockGroup對象
DoubleAnimation mys = ((DoubleAnimation)clockgroup.Children[0].Timeline);// 獲取當前的DoubleAnimation對象
Button mybutton=(Button)Storyboard.GetTarget(mys); //獲取當前按鈕對象
DoubleAnimation myani = new DoubleAnimation(); //實例化一個DoubleAninmation對象
myani.From = mybutton.Width;//開始值
//忽略結束值
myani.Duration = TimeSpan.FromSeconds(1); //所用時間
Storyboard.SetTarget(myani, mybutton); //設置應用的對象
Storyboard.SetTargetProperty(myani, new PropertyPath("Width")); //設置應用的依賴項屬性
Storyboard s = new Storyboard();// 實例化一個故事板
s.Children.Add(myani);//將先前動畫添加進來
s.Begin(); //啟動故事版
DoubleAnimation mys = ((DoubleAnimation)clockgroup.Children[0].Timeline);// 獲取當前的DoubleAnimation對象
Button mybutton=(Button)Storyboard.GetTarget(mys); //獲取當前按鈕對象
DoubleAnimation myani = new DoubleAnimation(); //實例化一個DoubleAninmation對象
myani.From = mybutton.Width;//開始值
//忽略結束值
myani.Duration = TimeSpan.FromSeconds(1); //所用時間
Storyboard.SetTarget(myani, mybutton); //設置應用的對象
Storyboard.SetTargetProperty(myani, new PropertyPath("Width")); //設置應用的依賴項屬性
Storyboard s = new Storyboard();// 實例化一個故事板
s.Children.Add(myani);//將先前動畫添加進來
s.Begin(); //啟動故事版
怎么樣,是不是很簡單啊?除了DoubleAnimation動畫,還有ColorAnimation,ByteAnimation等42個動畫,它們中的一些是與DoubleAnimation是一樣的用法,在此就不過多探討了。
我也是新手,大家共同學習,高手見笑了。
