前言
WPF中有三种动画类型:
- 线性插值
- 关键帧
- 路径动画
这三种动画都是在System.Windows.Media.Animation
命名空间中
其中路径动画有三种:
- MatrixAnimationUsingPath
- PointAnimationUsingPath
- DoubleAnimationUsingPath
本文主要说线性插值动画。
XAML实现动画
BeginStoryboard、 Storyboard 和 DoubleAnimation 的解释:
1)BeginStoryboard:启动 Storyboard,并将动画分发给动画的目标对象和属性;
2)Storyboard:为容器的子动画提供对象和属性目标信息的容器时间线;
3)DoubleAnimation:在指定的时间内,使用线性内擦,对两个目标值之间的 System.Double 属性值进行动画处理。
XAML实现动画过程
- 设置动画目标对象
- 设置动画执行的触发器:控制动画播放的基本条件
- 在触发器中注册路由事件:指定对象的哪个事件激活触发器
- 激活触发器条件下开始故事版执行
- 故事版中添加动画,指定动画的5个必要属性
故事版动画
1 | <Border Name="Bd" Width="100" Height="100" Background="Cyan" Canvas.Left="200" Canvas.Top="120"> |
指定动画的必要属性
- From:动画属性的起始值
- To:动画属性的结束值
- Duration:动画执行所需的时间
- TargetName:执行这个动画的对象名称
- TargetProperty:执行这个动画的对象的属性是哪个属性
可选属性
- AutoReverse:设置是否往返播放
- RepeatBehavior:设置播放的次数枚举RepeatBehavior.Forever设置永久重复
在 XAML中应用和启动Storyboard的最简单的方法是使用事件触发器。
创建一个BeginStoryboard对象并将演示图板与其关联。BeginStoryboard 是一种应用和启动 Storyboard 的 TriggerAction。
1 | <Storyboard> |
使用C#实现WPF动画
WPF动画实现的基本过程
- 先创建故事版
- 选择动画并创建动画
- 设置动画的5个必要属性
- 将动画添加到故事版中
- 通过故事版的方法来启动动画
平移动画
1、创建故事板
故事版就类似于是剧本,里面基本上要确定所有动画的播放规则属性。
1 | // 创建故事版 Storyboard |
2、创建故事内容情节
类似于故事情节, 选择动画的性质
1 | // 平移动画 |
3、故事内容情节完善
五个属性:
3.1 From:起始值
1 | move.From = 0; |
3.2 To:结束值
1 | move.To = 500; |
3.3 Duration:表示动画执行一次所需要的时间
1 | move.Duration = new Duration(TimeSpan.FromSeconds(3)); |
注意:
以上三点,可以合写在第二步中,如下:1
DoubleAnimation move = new DoubleAnimation(0,500,new Duration(TimeSpan.FromSeconds(3)));
补充:
1 | // 翻转动画 |
3.4 Storyboard.SetTarget:设置动画执行的对象
1 | Storyboard.SetTarget(move, this); |
3.5 Storyboard.SetTargetProperty:设置动画的执行属性
1 | Storyboard.SetTargetProperty(move, new PropertyPath("(Canvas.Left)")); |
4、将故事情节添加到故事版中
1 | story.Children.Add(move); |
5、选择合适的机会开始执行动画
1 | story.Begin(); |
整体示例
1 | Storyboard story = new Storyboard(); |
渐变动画
1 | // 渐变动画 |
旋转动画
1 | // 旋转动画 |