WPF实现动画——旋转
1、布局
布局为Canvas画布
2、对象
but.Background = Brushes.LightSteelBlue;//按钮控件的背景颜色
but.Width = but.Height = 100;//按钮控件的宽高大小
xz.Children.Add(but);//将按钮控件添加到Canvas画布中
//设置位置在窗口中居中
Canvas.SetLeft(but, this.Width / 2 - but.Width / 2);
Canvas.SetTop(but, this.Height / 2 - but.Height / 2);
but.Click += But_Click;//添加点击事件
就是说让谁旋转(有这个行为)那么谁就是这个对象,这里我使用Button按钮控件,为正方形
3、实例化旋转对象
//实例化顺时针旋转动画对象
RotateTransform rotate = new RotateTransform();
注: RotateTransform 表示:围绕指定点顺时针旋转某个对象
4、让按钮顺时针旋转
but.RenderTransform = rotate;//顺时针旋转控件
注:RenderTransform 表示:获取或设置影响的呈现位置的转换信息
5、设置按钮控件旋转的中心点(任何一个对象旋转都要依靠一个点)
but.RenderTransformOrigin = new Point(0.5, 0.5);//设置旋转中心
//(0.5,0.5)表示中心
6、添加容器时间线
Storyboard story = new Storyboard();//实例化容器时间线对象
//功能:为子动画提供对象和属性的确切信息
注:
Storyboard 故事板,WPF里面的一种时间线,这种时间线可以操作他运行、停止、前进等等,通过BeginStoryBoard StopStoryBoard等动作
7、实例化处理动画的对象
DoubleAnimation da = new DoubleAnimation(0,3600,new Duration(TimeSpan.FromSeconds(3)));//实例化动画处理对象
//其实值为0就是原点,旋转一周为360度,但是我们要想让他以10倍的速度旋转这360度,旋转为完需要3毫秒
8、旋转的次数为无线旋转
da.RepeatBehavior = RepeatBehavior.Forever;//设置这个旋转的行为无限循环
9、将按钮控件和这个处理动画的事件链接起来
Storyboard.SetTarget(da, but);//对象和属性,对象是按钮,属性就是行为,旋转的行为
10、旋转肯定是让一个角旋转,来达到旋转的效果
Storyboard.SetTargetProperty(da, new PropertyPath("RenderTransform.Angle"));//顺时针旋转一个角 让一个角顺时针旋转
11、将旋转的行为添加到Storyboard时间线故事板中
story.Children.Add(da);//将这个旋转的行为(处理动画的类)添加到时间线故事板中