原文:WPF中的动画——(二)From/To/By 动画

我们所实现的的动画中,很大一部分是让一个属性在起始值和结束值之间变化,例如,我在前文中实现的改变宽度的动画:

var widthAnimation = new DoubleAnimation()
    {
        From = 0,
        To = 320,
        Duration = TimeSpan.FromSeconds(2),
        RepeatBehavior = RepeatBehavior.Forever,
    };

button.BeginAnimation(WidthProperty, widthAnimation);

这个动画实现了宽度在0和320之间的变化,由于宽度是一个double型,因此这里用的是DoubleAnimation。对于一些其它常见的类型,如Byte、Color、Int32、Size、Point等,在System.Windows.Media.Animation下都有相应的过渡动画实现,命名规则是"数据结构类型+Animation"这里就不多介绍了。

这种过渡动画一般成为From/To/By 动画,是因为它们是通过From、To、By三个属性来决定了目标属性的起始值和结束值。首先我们来看下这三个属性代表的意义:

  • From: 起始值,在动画开始的时候将目标属性设置为该值
  • To: 结束值,动画结束是目标属性为改值
  • By: 偏移值:动画结束的时候目标属性为"初始值+偏移值"

很明显,To和By的效果是有可能冲突的。实际上,这三个属性都是可选设置的,并且在设置了To和By的时候,是会忽略By属性的。下面我再通过一些简单的场景介绍一下这三个属性如何组合使用。

  • 由0 变为 320:        From = 0, To = 320
  • 由初始值变为320:   To = 320
  • 由0变为初始值:       From = 0
  • 由0增大150:          From = 0, By = 150
  • 由初始值增大150:   By = 150

看了这几个用例后,相信大家已经大致能明白这三个参数的使用方法。

为什么这么设计

初一看上去,这种From、To、By的三参数设计得过于复杂,完全可以用From和To两个参数可以确定,需要用到By的地方通过运算获取。 甚至From和To也可以强制要求赋值,这样就不会出现From和To都不赋值的这种非法情况了。为什么要这么设计呢? 我觉得有两个原因:

  1. 这种比较灵活的方式可以方便将动画和具体的对象分离出来,可以方便复用和组合。
  2. 方便在XAML中使用。如果像我上述的那样的做法,很多时候需要取对象的初始值,用XAML编写复杂的动画时,这种操作并不是是很方便。

时间控制

这里只介绍了如何设置过渡动画的起始状态和终止状态,动画还有一个比较重要部分是时间控制,如动画时间段的长度、开始时间、重复次数、进度的快慢,结束通知等。这些都是在其基类TimeLine中控制的,下一章将单独对其介绍。

参考资料

http://msdn.microsoft.com/zh-cn/library/aa970265(v=vs.110).aspx

WPF中的动画——(二)From/To/By 动画相关推荐

  1. WPF入门教程系列十六——WPF中的数据绑定(二)

    三.绑定模式 通过上一文章中的示例,学习了简单的绑定方式.在这里的示例,要学习一下绑定的模式,和模式的使用效果. 首先,我们来做一个简单示例,这个示例是根据ListBox中的选中项,去改变TextBl ...

  2. WPF中的动画——(二)From/To/By 动画(二)

    WPF中的动画--(二)From/To/By 动画 我们所实现的的动画中,很大一部分是让一个属性在起始值和结束值之间变化,例如,我在前文中实现的改变宽度的动画: var widthAnimation ...

  3. WPF中的动画——(一)基本概念

    原文:WPF中的动画--(一)基本概念 WPF的一个特点就是支持动画,我们可以非常容易的实现漂亮大方的界面.首先,我们来复习一下动画的基本概念.计算机中的动画一般是定格动画,也称之为逐帧动画,它通过每 ...

  4. 【WPF学习笔记】[转]周银辉之WPF中的动画 晓风影天之wpf动画——new PropertyPath属性链...

    (一)WPF中的动画 动画无疑是WPF中最吸引人的特色之一,其可以像Flash一样平滑地播放并与程序逻辑进行很好的交互.这里我们讨论一下故事板. 在WPF中我们采用Storyboard(故事板)的方式 ...

  5. 二维动画作品_「咻动画」二维动画制作中角色造型的设计要点

    关于二维动画可能就算不是动画行业的小伙伴们都多多少少都有所了解,近年来其在宣传片制作上面越来越受用.不少企业抛开传统保守的宣传片表现形式转而尝试动画制作宣传片,我们都知道在动画制作从脚本策划到输出成片 ...

  6. WPF中自动增加行(动画)的TextBox

    WPF中自动增加行(动画)的TextBox 原文:WPF中自动增加行(动画)的TextBox WPF中自动增加行(动画)的TextBox WPF中的Textbox控件是可以自动换行的,只要设置Text ...

  7. WPF中播放Flash动画

    WPF本身不直接支持播放Flash动画,需要做点"设计",下面是示例(嵌入WPF窗口播放). 1.首先在VS2010中建立项目.打开VS2010后选择"文件"- ...

  8. WPF中的命令与命令绑定(二)

    WPF中的命令与命令绑定(二)                                              周银辉 在WPF中,命令(Commanding)被分割成了四个部分,分别是IC ...

  9. WPF中的动画——(三)时间线(TimeLine)

    WPF中的动画--(三)时间线(TimeLine) 原文:WPF中的动画--(三)时间线(TimeLine) 时间线(TimeLine)表示时间段. 它提供的属性可以让控制该时间段的长度.开始时间.重 ...

最新文章

  1. 12月4日云栖精选夜读 | 你不知道的Web前端安全技术
  2. **PHP SimpleXML 使用详细例子
  3. spawn-fcgi启动的一些报错问题
  4. 关于SVN 目录结构
  5. python写dnf游戏脚本辅助_HMM-维特比算法明白与实现(python)_dnf辅助,r6辅助
  6. PHP魔术方法和魔法变量详解
  7. 有哪些激光雷达SLAM算法?
  8. 百度文库付费文档完整查看_无需付费直接下载百度文库!
  9. 和自己“卷”才是王道
  10. IBM SPSS Statistics如何快速有效地录入数据
  11. python中不等于用什么符号_python中表示不等于的符号是什么
  12. MySQL讲义第 43 讲——select 查询之查询练习(一)
  13. 微信小程序 保存base64图片和普通图片
  14. 点击量、点击率、访客数、的区别与作用
  15. mac os之监听触摸板(捏合、旋转、三指)
  16. jquery多属性选择器
  17. 汉字转拼音函数 linux,汉字转拼音占内存更少转换速度更快的程序
  18. 实验五 网络编程与安全 20162316 刘诚昊
  19. Android接入微信登陆
  20. J2EE-2 helloworld

热门文章

  1. c 普通的文本变成注释文本的快捷键_收藏了!IntelliJ IDEA 2019 快捷键开发手册
  2. 古剑奇谭二服务器维护,《古剑奇谭二》10月4日例行维护更新公告
  3. python怎么输出字符串_python出输出字符串方式:
  4. cad怎么画坐标系箭头_CAD绘图中箭头太大(小)怎么调整?
  5. 小米履带机器人充电时一直响_小米有品上线擦地机器人,每天放出去溜一圈,老婆夸我家务做的好...
  6. it转正述职报告_普通员工转正述职报告范文
  7. 如果CRC等于炒鸡蛋,那么...
  8. 测试电阻电容 二三极管的好帮手 晶体管测试显示模块
  9. Mac下安装JDK以及怎么配置环境变量?
  10. java文字转pdf格式_java根据富文本生成pdf文件