首页 > 学院 > 开发设计 > 正文

第15章 动画基础(1)——概述、通过代码创建动画和动画的生命周期

2019-11-10 18:46:42
字体:
来源:转载
供稿:网友

一、动画概述

①动画是WPF模型的核心部分。这意味着为了让动画动起来,不需要使用计时器以及事件处理代码,只需要使用声明的方式即可创建动画。

②WPF动画是基于属性的动画。本质上,WPF动画只不过是在一段时间间隔内修改下依赖项属性而已。

③创建正确动画的秘密在于决定需要修改什么属性。

④为了实现属性的动态化,需要有支持相应数据类型的动画类。如Button.Width属性使用双精度数据类型,就必须使用DoubleAnimation类实现动画。

⑤动画分为:线性插值动画、关键帧动画和路径动画

线性插值动画:指在开始值和结束值之间以逐步增加的方式进行的动画。

命名方式:类型名+Animation。如:DoubleAnimation

关键帧动画:指一个值突然改变到另一个值的动画。

命名方式:类型名+AnimationUsingKeyFrames。如:ColorAnimationUsingKeyFrames

从适用范围上将关键帧动画大于线性插值动画。可以这样讲所有支持关键帧动画的数据类型,都支持线性插值动画,但反过来不成立。

路径动画:值沿着指定路径移动的动画,它比前两种动画更加专业。

命名方式:类型名+AnimationUsingPath。如:PointAnimationUsingPath

⑥所有动画类都定义在System.Windows.Media.Animation命名空间下,共计42个。详情见书P352-P353。

二、通过代码创建动画

①每个依赖属性每次只能响应一个动画,如果开始第二个动画,将自动放弃第一个动画。

②线性插值动画的常用属性:

From属性:属性开始值。

若没有硬编码属性值,此时动画省略设置该属性的话,动画无法执行会报错,因为无法获取该属性值。

PRivate void myButtonn_Click(object sender, RoutedEventArgs e){    DoubleAnimation wa = new DoubleAnimation();    wa.From = myButtonn.ActualWidth;    wa.To = this.Width - 30;    wa.Duration = TimeSpan.FromSeconds(5);    myButtonn.BeginAnimation(Button.WidthProperty, wa);}ActualWidth属性指按钮当前渲染时的宽度。这样设置意味着即使在动画执行中单击按钮,也不会使动画从头再来。

To属性:属性结束值。

若省略To属性,则意味着回到元素的原始属性值。

By属性:创建按设置的值改变动画,而不是给定目标值。会实现元素触发一下,变化一点的效果。

private void myButtonn_Click(object sender, RoutedEventArgs e){    DoubleAnimation wa = new DoubleAnimation();    wa.From = myButtonn.ActualWidth;    wa.By = 10;    wa.Duration = TimeSpan.FromSeconds(5);    myButtonn.BeginAnimation(Button.WidthProperty, wa);}Duration属性:动画执行时间。

三、动画的生命周期①WPF动画是暂时的,它不会能真正改变基本属性的值。

②当动画执行完成时,通过代码设置元素属性值是不起作用的,这是因为元素属性优先使用动画之后的值。

③通过设置AutoReverse属性为True,可反转动画。

④FillBehavior属性。通常该属性值为HoldEnd,这意味着动画结束后,元素属性值为动画结束后的值。若设置该属性值为Stop,则意味着只要动画结束,属性就会自动恢复为原来的值。

⑤AccelerationRatio属性加速动画执行速度,DecelerationRatio属性减速动画执行速度,两个值都用百分比表示。

通过加速和减速的动画看上去更加自然。

⑥RepeatBehavior属性可控制如何重复运行动画。


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表