第15章 动画基础(1)——概述、通过代码创建动画和动画的生命周期
2017-02-08 14:48
260 查看
一、动画概述
①动画是WPF模型的核心部分。这意味着为了让动画动起来,不需要使用计时器以及事件处理代码,只需要使用声明的方式即可创建动画。
②WPF动画是基于属性的动画。本质上,WPF动画只不过是在一段时间间隔内修改下依赖项属性而已。
③创建正确动画的秘密在于决定需要修改什么属性。
④为了实现属性的动态化,需要有支持相应数据类型的动画类。如Button.Width属性使用双精度数据类型,就必须使用DoubleAnimation类实现动画。
⑤动画分为:线性插值动画、关键帧动画和路径动画
线性插值动画:指在开始值和结束值之间以逐步增加的方式进行的动画。
命名方式:类型名+Animation。如:DoubleAnimation
关键帧动画:指一个值突然改变到另一个值的动画。
命名方式:类型名+AnimationUsingKeyFrames。如:ColorAnimationUsingKeyFrames
从适用范围上将关键帧动画大于线性插值动画。可以这样讲所有支持关键帧动画的数据类型,都支持线性插值动画,但反过来不成立。
路径动画:值沿着指定路径移动的动画,它比前两种动画更加专业。
命名方式:类型名+AnimationUsingPath。如:PointAnimationUsingPath
⑥所有动画类都定义在System.Windows.Media.Animation命名空间下,共计42个。详情见书P352-P353。
二、通过代码创建动画
①每个依赖属性每次只能响应一个动画,如果开始第二个动画,将自动放弃第一个动画。
②线性插值动画的常用属性:
From属性:属性开始值。
若没有硬编码属性值,此时动画省略设置该属性的话,动画无法执行会报错,因为无法获取该属性值。
To属性:属性结束值。
若省略To属性,则意味着回到元素的原始属性值。
By属性:创建按设置的值改变动画,而不是给定目标值。会实现元素触发一下,变化一点的效果。
三、动画的生命周期
①WPF动画是暂时的,它不会能真正改变基本属性的值。
②当动画执行完成时,通过代码设置元素属性值是不起作用的,这是因为元素属性优先使用动画之后的值。
③通过设置AutoReverse属性为True,可反转动画。
④FillBehavior属性。通常该属性值为HoldEnd,这意味着动画结束后,元素属性值为动画结束后的值。若设置该属性值为Stop,则意味着只要动画结束,属性就会自动恢复为原来的值。
⑤AccelerationRatio属性加速动画执行速度,DecelerationRatio属性减速动画执行速度,两个值都用百分比表示。
通过加速和减速的动画看上去更加自然。
⑥RepeatBehavior属性可控制如何重复运行动画。
①动画是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属性可控制如何重复运行动画。
相关文章推荐
- UI基础-基础控件-0324-通过代码创建按钮
- 26-UI基础通过代码创建九宫格
- cocos2d-js 开发基础练习代码(2)——使用事件管理器创建用户交互以及cocos精灵帧动画的js使用
- 黑马程序员——JAVA基础——线程---概述,创建、生命周期,控制,同步,线程通信
- silverlight如何在运行时用代码动态控制(或创建)动画
- 个人学习代码保存:例10.通过模板创建静态页面的操作文件的一个自定函数
- 创建代码生成器可以很简单:如何通过T4模板生成代码?[上篇]
- WCF基础 (续 通过代码和配置文件写一个WCF服务)
- android 通过代码创建页面组件
- 一起谈.NET技术,创建代码生成器可以很简单:如何通过T4模板生成代码?[上篇]
- Silverlight实用窍门系列:20.后台CS代码中创建四种常用的动画效果【附带源码实例】
- 第一章 基础 (续 通过代码和配置文件写一个WCF服务)
- WCF 第一章 基础 通过代码和配置文件写一个WCF服务
- 从Flash到Silverlight进阶教程-用代码来创建动画
- 在DNN中通过代码添加、修改、删除用户和给特定用户创建、删除角色
- [Silverlight]通过SilverlightLoader使用托管代码创建自定义载入界面(Splash Screen) (上)
- rdlc 自由报表,如何通过代码创建分组
- WCF 第一章 基础 通过代码和配置文件写一个WCF服务
- 如何在代码中通过命令行创建SQL SERVER 数据库
- 通过写代码,attach程序中创建的其他进程,将其加入VS的Debugger,以方便调试