WPF中 Storyboard容器时间线的讲解

本文深入讲解了WPF中Storyboard的使用方法,包括平移、颜色变换、边框粗细及旋转动画的实现过程,通过实例代码展示了如何控制动画的播放、重复及方向。

WPF中 Storyboard容器时间线的讲解

一、介绍

Storyboard表示:一个容器时间线,该时间线为自动化提供对象,和属性确定信息

简单来说Storyboard就是一个故事板或者说剧本,上面写了动画情节,可以控制动画的播放等等

二、这里用到三个属性

属性说明参数说明
SetTarget使指定TimeLin依赖对象为目标第一个参数为创建的动画处理对象,第二个为要进行某种行为的对象
SetTargetProperty使指定TimeLin目标成为指定的依赖属性第一个参数就是创建的动画处理对象,第二个参数需要new PropertyPath()表示进行某种行为的位置
Children获取对象的集合采用Add方法,将创建动画处理的对象添加到这个故事板中
Begin开启关联的动画

代码如下:

Storyboard story = new Storyboard();//实例化容器时间线(故事板)
Storyboard.SetTarget(da, bord);
Storyboard.SetTargetProperty(da, new PropertyPath("(Canvas.Left)"));
story.Children.Add(da);
story.Begin();

三、回顾动画

1、平移

storyboard story = new Storyboard();//实例化容器时间线(故事板)
DoubleAnimation da = new DoubleAnimation(Canvas.GetLeft(bord),100,new Duration(timeSpan:TimeSpan.FromSeconds(3)));//实例化double动画处理对象,并取值
            da.AutoReverse = true;//按相反的顺序返回
            da.RepeatBehavior = RepeatBehavior.Forever;//无限循环
            Storyboard.SetTarget(da, bord);//将动画处理的对象和控件关联起来
            Storyboard.SetTargetProperty(da, new PropertyPath("(Canvas.Left)"));//设置这个动画的播放位置
            story.Children.Add(da);//将动画处理对象添加到故事板中
            story.Begin();//开启时间线动画

注意:

Storyboard.SetTargetProperty(da, new PropertyPath("(Canvas.Left)"));

如想要垂直平移那么就将Left改为Top

如想斜着那么就就设置两个平移,一个向下,一个向右

2、颜色和边框颜色,并且边框粗细的动画

(1)设置背景颜色动画
 Storyboard story = new Storyboard();//实例化容器时间线(故事板)
ColorAnimation ca = new ColorAnimation(Colors.LightBlue, Colors.LightPink, new Duration(TimeSpan.FromSeconds(3)));//实例化颜色动画处理对象
            ca.AutoReverse = true;
            ca.RepeatBehavior = RepeatBehavior.Forever;
            Storyboard.SetTarget(ca, bord);
            Storyboard.SetTargetProperty(ca, new PropertyPath("(Border.Background).(SolidColorBrush.Color)"));//背景颜色变换
            //SolidColorBrush表示实心画刷
            story.Children.Add(ca);
            //story.Begin();
(2)设置边框颜色动画
 Storyboard story = new Storyboard();//实例化容器时间线(故事板)
ColorAnimation ca = new ColorAnimation(Colors.Green, Colors.Red, new Duration(TimeSpan.FromSeconds(3)));//实例化颜色动画处理对象
            ca.AutoReverse = true;
            ca.RepeatBehavior = RepeatBehavior.Forever;
            Storyboard.SetTarget(ca, bord);
            Storyboard.SetTargetProperty(ca, new PropertyPath("(Border.BorderBrush).(SolidColorBrush.Color)"));//边框颜色变换
            //SolidColorBrush表示实心画刷
            story.Children.Add(ca);
           // story.Begin();
(3)设置边框粗细动画
 Storyboard story = new Storyboard();//实例化容器时间线(故事板)
ThicknessAnimation da = new ThicknessAnimation(new Thickness(1),new Thickness(10),new Duration(TimeSpan.FromSeconds(3)));//实例化边框动画处理对象
            da.AutoReverse = true;
            da.RepeatBehavior = RepeatBehavior.Forever;
            Storyboard.SetTarget(da, bord);
            Storyboard.SetTargetProperty(da, new PropertyPath("BorderThickness"));//边框粗细变换
            story.Children.Add(da);
            //story.Begin();

3、设置旋转

		   Storyboard story = new Storyboard();//实例化容器时间线(故事板)
		   RotateTransform tate = new RotateTransform();//实例化旋转对象
            bord.RenderTransform = tate;//控件的位置为旋转
            bord.RenderTransformOrigin = new Point(0.5, 0.5);//旋转点为中心点
            DoubleAnimation da = new DoubleAnimation(0, 360, new Duration(timeSpan: TimeSpan.FromSeconds(3)));//double动画处理对象
            da.AutoReverse = true;//返回
            da.RepeatBehavior = RepeatBehavior.Forever;//无限循环
            Storyboard.SetTarget(da, bord);
            Storyboard.SetTargetProperty(da, new PropertyPath("RenderTransform.Angle"));//旋转一个角
            story.Children.Add(da);
            //story.Begin();
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

御弟謌謌

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值