关于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 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是一样的用法,在此就不过多探讨了。
我也是新手,大家共同学习,高手见笑了。