关于WPF动画的简单例子

相信许多新人对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动画,还有ColorAnimation,ByteAnimation等42个动画,它们中的一些是与DoubleAnimation是一样的用法,在此就不过多探讨了。

 

我也是新手,大家共同学习,高手见笑了。

 

附下载地址:https://skydrive.live.com/redir.aspx?cid=f408a3d3df420664&resid=F408A3D3DF420664!175&parid=F408A3D3DF420664!109&authkey=!AB3d5yx9ltzENxg

posted @ 2012-05-04 12:02  deepwzh  阅读(5119)  评论(2编辑  收藏  举报