从本节开始,我们将围绕一个有趣的话题展开讨论——动画。

看到动画一词,你一定想到Flash,毕竟WP应用的一个很重要的框架是Silverlight,在WP中也发挥了Silverlight的许多优点,可能不少人说,Silverlight就是和Flash差不多吧,当你深入了解了Silverlight后,你会发现,其实不然,Silverlight更偏重于数据处和企业级应用。

好了,F话不多说,开始吹我们今天的牛皮吧,在吹牛皮之前,我们更应该知道牛皮是从哪里来的。故在说动画之前,先想一下,什么是Storyboard?这个东东你觉得怎么翻译好呢,叫演示图板吧,MSDN是这样翻译的,我说一个直观一点的概念吧,不知道各位玩过Flash没,Flash里面有一个“帧面板”,是的,其实这个演示图板和帧面板有着很严重的相似之处。

这样吧,我们还是接受一下.NET非常强大的事实吧,所以,打开Express Blend来看看一个图形化的演示图板,这样一来,大家一定会更好理解。

这样一看,一定很形象了,Storyboard从TimeLine派生而来,时间线在动画里面是比较关键的,我们都知道,所谓动画会“动”,正是因为它存在一个时间差,“帧”的概念相信大家能理解,只可意会不可言传啊,看你跟她能有多少默契了。

一个Storyboard可以包含N多个子动画时间线,今天我们先来了解一个比较简单的,DoubleAnimation是在一定时间段内对两个double值进行动画处理,如可视化元素的宽度,高度,透明度等。

严重警告:不是所有的属性都能够进行动画处理的,要进行动画处理的属性必须是依赖项属性。

好了,理论说多了,很容易让人走火入魔,还是动手干一下好吧。

下面我们来做一个演练。

第一步,新建一个WP应用程序项目,此处省略35个字。

第二步,在页面中添加一个矩形,两个按钮,矩形是“小白鼠”,是用来给我们做动画实验的,至于那两个按钮,一个是播放动画,一个是停止动画。界面怎么布置,随你喜欢。

[html] view plaincopyprint?
  1. <!--ContentPanel - 在此处放置其他内容-->
  2. <Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0">
  3. <Grid.RowDefinitions>
  4. <RowDefinition Height="*"/>
  5. <RowDefinition Height="auto"/>
  6. </Grid.RowDefinitions>
  7. <Rectangle x:Name="rec"
  8. Grid.Row="0"
  9. Margin="100"
  10. Fill="Yellow"/>
  11. <StackPanel Grid.Row="1" Orientation="Horizontal">
  12. <Button Content="播放" Click="play_Click"/>
  13. <Button Content="停止" Click="stop_Click"/>
  14. </StackPanel>
  15. </Grid>

第三步,在上面那个叫ContentPanel的Grid中加一个Storyboard,作为资源,并在其中声明一个DoubleAnimation,把矩形的透明度在5秒钟内变为0,即使矩形产生淡出的动画效果。

Storyboard.TargetName附加属性指定要进行动画处理的对象的名字,你想干掉谁,就写上它的名字吧;Storyboard.TargetProperty是要动画处理的属性,由于我们要对透明度进行动画过度,故这里用Opacity属性。Duration就是动画的时长,这里取5秒钟。

[html] view plaincopyprint?
  1. <Grid.Resources>
  2. <Storyboard x:Name="std">
  3. <DoubleAnimation
  4. Duration="0:0:5"
  5. Storyboard.TargetName="rec"
  6. Storyboard.TargetProperty="Opacity"
  7. To="0"/>
  8. </Storyboard>
  9. </Grid.Resources>

第四步,分别处理两个按钮的单击事件,调用Storyboard的Begin和Stop方法来控件动画的播放和停止。

[csharp] view plaincopyprint?
  1. private void play_Click(object sender, RoutedEventArgs e)
  2. {
  3. this.std.Begin();
  4. }
  5. private void stop_Click(object sender, RoutedEventArgs e)
  6. {
  7. this.std.Stop();
  8. }

好,现在运行一下看看。

不够爽吗?再做一个吧,把一个椭圆的宽度在3秒钟内从20变为420,如何。

看XAML代码。

[html] view plaincopyprint?
  1. <Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0">
  2. <Grid.RowDefinitions>
  3. <RowDefinition />
  4. <RowDefinition Height="Auto" />
  5. </Grid.RowDefinitions>
  6. <Ellipse Grid.Row="0" Height="325" Name="ell"  Width="15" Fill="DarkOrange" />
  7. <StackPanel Grid.Row="1" Orientation="Horizontal">
  8. <Button Content="播放" Click="onPlay"/>
  9. <Button Content="停止" Click="onStop"/>
  10. </StackPanel>
  11. <Grid.Resources>
  12. <Storyboard x:Name="std">
  13. <DoubleAnimation Duration="0:0:3"
  14. Storyboard.TargetName="ell"
  15. Storyboard.TargetProperty="Width"
  16. From="20"
  17. To="420"/>
  18. </Storyboard>
  19. </Grid.Resources>
  20. </Grid>

后台代码:

[csharp] view plaincopyprint?
  1. private void onPlay(object sender, RoutedEventArgs e)
  2. {
  3. this.std.Begin();
  4. }
  5. private void onStop(object sender, RoutedEventArgs e)
  6. {
  7. this.std.Stop();
  8. }

看看运行效果。

转载于:https://www.cnblogs.com/songtzu/archive/2012/07/24/2607108.html

Windows Phone开发(36):动画之DoubleAnimation 转:http://blog.csdn.net/tcjiaan/article/details/7521388...相关推荐

  1. Windows Phone开发(39):漫谈关键帧动画上篇 转:http://blog.csdn.net/tcjiaan/article/details/7550506...

    尽管前面介绍的几种动画会让觉得很好玩了,但是,不知道你是否发现,在前面说到的一系列XXXAnimation中,都有一个共同点,那就是仅仅针对两个值的目标值之间产生动画,如果使用By,将在原值和加上By ...

  2. Windows Phone开发(28):隔离存储B 转:http://blog.csdn.net/tcjiaan/article/details/7436959...

    上一节我们聊了目录的操作,这一节我们继续来看看如何读写文件. 首先说一下题外话,许多朋友都在摇摆不定,三心二意,其实这样的学习态度是很不好的,如果你对Windows phone开发有兴趣,如果你真想学 ...

  3. Windows Phone开发(40):漫谈关键帧动画之中篇 转:http://blog.csdn.net/tcjiaan/article/details/7559978...

    一.DiscreteDoubleKeyFrame 离散型关键帧动画,重点,我们理解一下"离散"的意思,其实你查一下<新华字典>,"离"和" ...

  4. Windows Phone开发(46):与Socket有个约会 转:http://blog.csdn.net/tcjiaan/article/details/7669315...

    不知道大家有没有"谈Socket色变"的经历?就像我一位朋友所说的,Socket这家伙啊,不得已而用之.哈,Socket真的那么恐怖吗? 其实这话一点也不假,Socket有时候真的 ...

  5. Windows Phone开发(16):样式和控件模板 转:http://blog.csdn.net/tcjiaan/article/details/7367260...

    在前面资源一文中也提过样式,样式就如同我们做HTML页排版时常用到的CSS样式表,它是对于特定娄型的可视化元素,应该可以直接说是针对控件的一种可重用的属性设置列表,这样对于需要设置相同属性值的同类型的 ...

  6. Windows Phone开发(7):当好总舵主 转:http://blog.csdn.net/tcjiaan/article/details/7281421...

    吹完了页面有关的话题,今天我们来聊一下页面之间是如何导航的,在更多情况下,我们的应用程序不会只有一个页面的,应该会有N个,就像我们做桌面应 用开发那样,我们一个应用程序中可能不止一个窗体(极简单的程序 ...

  7. Windows Phone开发(27):隔离存储A 转:http://blog.csdn.net/tcjiaan/article/details/7425212...

    在很多资料或书籍上都翻译为"独立存储",不过,我想了一下,决定将IsolatedStorage翻译为"隔离存储",我想这样会更方便大家对这一概念的理解. 关于何 ...

  8. Windows Phone开发(35):使用Express Blend绘图 转:http://blog.csdn.net/tcjiaan/article/details/7493010...

    上一节中我们简单扯了一下绘图指令,然而那也不是最简单的绘图法,今天,我再向大家推荐一种更好的绘图方案--Express Blend工具的使用. 这个工具是随SDK一起安装的,也是免费的,相信大家都知道 ...

  9. Windows Phone开发(32):路径之PathGeometry 转:http://blog.csdn.net/tcjiaan/article/details/7469512...

    说起路径这玩意儿,其实说的就是Path类,它藏在命名空间System.Windows.Shapes下,应该好找,它有一个很重要的属性Data,你不妨在"对象浏览器"中把它抓出来看看 ...

最新文章

  1. python中gui有没有电子表格控件_python实现表格控件
  2. linux下查看cpu负载及分析
  3. html 怎么使用http请求数据类型,HTTP请求方式中8种请求方法(简单介绍)
  4. 老师们的神操作,但凡有一个是我的老师,我必定能上清华
  5. DEEPIN教程 - 本地安装Typora
  6. 借助波音公司打造优秀按单制造(MTO II)管理系统
  7. 一位全加器Verilog的三种不同的描述
  8. 【.Net】asp.net 把图片从CMYK印刷模式转换为RGB原色模式
  9. 图形化开发(五)032-Three.js之光照——PointLight 点光源、SpotLight 聚光灯光源、实现聚光灯阴影、HemisphereLight室外光源
  10. Windows虚拟主机有哪些优势?
  11. linux面试大全最新
  12. java Date.getDay()
  13. 实例简述Spring AOP之对AspectJ语法的支持
  14. oracle静默安装报错,静默安装Oracle11gR2 [FATAL] [INS-32015]报错
  15. android 摄像头画面竖,OpenCV for Android(5):竖屏摄像头旋转问题
  16. (转)Element和Node的区别你造吗?
  17. 数据结构与算法实验报告——实验一 链表
  18. 微信小程序 版本更新
  19. 阿里巴巴《Java开发手册》2019最新版下载!
  20. 阻容感基础10:电感器分类(1)-片式电感器

热门文章

  1. 计算机音乐刚好遇见你乐谱,《刚好遇见你》曲谱_刚好遇见你乐谱
  2. cocos 时间函数需要什么引用_2021国家公务员考试时间是什么时候 国考备考时间需要多久...
  3. matlab在图像上画出来的矩形框如何变成可托动的_计算机基础系列:源代码如何被计算机执行...
  4. 英伟达验证图片加载不出来_让大卫雕塑跳舞、蒙娜丽莎说话,英伟达视频合成有如此多「骚操作」...
  5. 腐蚀国内稳定服务器_WOW正式服:热修提升坐骑掉率,下周改动大幻象装备必带腐蚀...
  6. java数据模型公共类_UML数据建模工具之Enterprise Architect(EA)实例
  7. sqlanyshere转mysql_【SQL】Oracle和Mysql的分页、重复数据查询(limit、rownum、rowid)
  8. python爬微博关键字_一个简单的python爬虫实践,爬取包含关键词的新浪微博
  9. C#打开相机详细过程与代码解释
  10. MATLAB对比度调节工具