原文:Windows Phone开发(37):动画之ColorAnimation

上一节中我们讨论了用double值进行动画处理,我们知道动画是有很多种的,今天,我向大家继续介绍一个动画类——ColorAnimation。

其实,它和DoubleAnimation也是很像,毕竟所谓动画,无非就是在特定的时间段内,把一个值变为另一个值的一种过度形式。故ColorAnimation就是用于颜色过度动画的。其中,以下几个属性我们只需简单关注一下即可:

1、By:相对于初始值所更改的值的总量。这个属性比较不好理解,所以我把它放到第一位,说实话,这种用颜色表示的值确实不好理解。我们不妨用DoubleAnimation的By属性来理解它,原理是一样的。举个例子,如果一个按钮的宽度Width的值为200,现在我对它进行动画处理,我把By设置为150,那么,你猜一下,动画的最终值是多少?不用猜,计算一下,既然By表示的是变化的总量,也就是 200 + 150 = ?,这结果不用我告诉你了吧,小学生级别的,你应该会计算的。

好的,再举一个例子如何,比如A类的某依赖项属性X的初始值为300,现在多要对它进行动画处理,我将By设置为-100,动画最终的值 = 300 - 100,这个会算了吧。

2、From:这个好理解 了,就是动画开始时的值,比如,我希望动画效果是,矩形的背景从红色变成蓝色,那么,From的值是不是Red啊?估计不用我给你答案了,你懂的。

3、To:与From相对,就是动画结束时的值,像上面的例子,从红色变成蓝色,也就是说,From = Red,To = Blue  。

好了,上面的内容大概了解一下可以了,千万不要背下来啊,编程是不能背书的,实在不记得了就查文档,查资料, 不能背。不要被砖家误导了。

现在我们可以开始干活了,来,跟着伴奏音乐,一起唱……

First,新建一个WP应用程序项目。

Second,这一步,没什么的,把以下的XAML代码干完,注意理解,不是叫你打字练习啊。

    <Grid>
<Rectangle Margin="80,150">
<Rectangle.Fill>
<SolidColorBrush x:Name="sb" Color="Green"/>
</Rectangle.Fill>
</Rectangle>
<Grid.Resources>
<Storyboard x:Name="std">
<ColorAnimation
Duration="0:0:1"
Storyboard.TargetName="sb"
Storyboard.TargetProperty="Color"
From="Red"
To="Blue"
RepeatBehavior="Forever"/>
</Storyboard>
</Grid.Resources>
</Grid>

使用RepeatBehavior="Forever"是为了能让动画不断循环播放,如果你希望重复3次就设置为3了,Forever就是永久重复。

别忘了在后台代码中启动动画。

        public MainPage()
{
InitializeComponent();
this.Loaded += (sender, e) => { std.Begin(); };
}

现在,你运行应用程序,你会看到很精彩的东西,比《西施秘史》还要精彩。

按照我的习惯,一个例子是不够的,想不想来一个更爽的?如果你想,就继续;如果你不想,请拔掉电脑电源。

接下来我们做一个对渐变画填充进行颜色动画处理,上面的例子,只是针对单色画刷,下面我们干渐变的。

    <Grid>
<Ellipse HorizontalAlignment="Center"
VerticalAlignment="Center"
Width="400" Height="400">
<Ellipse.Fill>
<RadialGradientBrush Center="0.5,0.5"
RadiusX="0.5"
RadiusY="0.5">
<GradientStop x:Name="g1" Color="Yellow" Offset="0"/>
<GradientStop x:Name="g2" Color="Green" Offset="0.5"/>
<GradientStop x:Name="g3" Color="Red" Offset="1"/>
</RadialGradientBrush>
</Ellipse.Fill>
</Ellipse>
<Grid.Resources>
<Storyboard x:Name="std">
<ColorAnimation
Duration="0:0:2"
Storyboard.TargetName="g1"
Storyboard.TargetProperty="Color"
From="LightBlue" To="Green"
RepeatBehavior="Forever"/>
<ColorAnimation
Duration="0:0:3"
Storyboard.TargetName="g2"
Storyboard.TargetProperty="Color"
From="Orange" To="Snow"
RepeatBehavior="Forever"/>
<ColorAnimation
Duration="0:0:1"
Storyboard.TargetName="g3"
Storyboard.TargetProperty="Color"
From="Yellow" To="Red"
RepeatBehavior="Forever"/>
</Storyboard>
</Grid.Resources>
</Grid>

后台代码还是不能忘,不然就启动不了动画了。

        public Page1()
{
InitializeComponent();
this.Loaded += (sender, e) => { std.Begin(); };
}

现在,你运行一下,保证比上面的精彩,管你信不信,反正你运行一下就会信了。

Windows Phone开发(37):动画之ColorAnimation的更多相关文章

  1. Windows Phone开发(42):缓动动画

    原文:Windows Phone开发(42):缓动动画 前面在讨论关键帧动画的时候,我有意把几个带缓动动画的关键帧动画忽略掉,如EasingColorKeyFrame.EasingDoubleKeyF ...

  2. Windows Phone开发(41):漫谈关键帧动画之下篇

    原文:Windows Phone开发(41):漫谈关键帧动画之下篇 也许大家已经发现,其实不管什么类型的动画,使用方法基本是一样的,不知道大家总结出规律了没有?当你找到规律之后,你会发现真的可以举一反 ...

  3. Windows Phone开发(38):动画之PointAnimation

    原文:Windows Phone开发(38):动画之PointAnimation PointAnimation也是很简单的,与前面说到的两个Animation是差不多的,属性也是一样的,如By.Fro ...

  4. Windows Phone开发(40):漫谈关键帧动画之中篇

    原文:Windows Phone开发(40):漫谈关键帧动画之中篇 一.DiscreteDoubleKeyFrame 离散型关键帧动画,重点,我们理解一下"离散"的意思,其实你查一 ...

  5. Windows Phone开发(39):漫谈关键帧动画上篇

    原文:Windows Phone开发(39):漫谈关键帧动画上篇 尽管前面介绍的几种动画会让觉得很好玩了,但是,不知道你是否发现,在前面说到的一系列XXXAnimation中,都有一个共同点,那就是仅 ...

  6. Windows Phone开发(36):动画之DoubleAnimation

    原文:Windows Phone开发(36):动画之DoubleAnimation 从本节开始,我们将围绕一个有趣的话题展开讨论--动画. 看到动画一词,你一定想到Flash,毕竟WP应用的一个很重要 ...

  7. Windows Store App 过渡动画

    Windows Store App 过渡动画     在开发Windows应用商店应用程序时,如果希望界面元素进入或者离开屏幕时显得自然和流畅,可以为其添加过渡动画.过渡动画能够及时地提示用户屏幕所发 ...

  8. Windows Phone开发(46):与Socket有个约会

    原文:Windows Phone开发(46):与Socket有个约会 不知道大家有没有"谈Socket色变"的经历?就像我一位朋友所说的,Socket这家伙啊,不得已而用之.哈,S ...

  9. Windows Phone开发(43):推送通知第一集——Toast推送

    原文:Windows Phone开发(43):推送通知第一集--Toast推送 好像有好几天没更新了,抱歉抱歉,最近"光荣"地失业,先是忙于寻找新去处,唉,暂时没有下文.而后又有一 ...

随机推荐

  1. 树莓派学习笔记——使用文件IO操作GPIO SysFs方式

    0 前言     本文描写叙述假设通过文件IO sysfs方式控制树莓派 GPIO端口.通过sysfs方式控制GPIO,先訪问/sys/class/gpio文件夹,向export文件写入GPIO编号, ...

  2. Java-对象多态性

    class A {  public void fun1()  {   System.out.println("<----A------>");  }  public v ...

  3. MFC的消息反射机制

    1.消息反射解释: 父窗口将子窗口发给它的通知消息,首先反射回子窗口进行处理(即给子窗口一个机会,让子窗口处理此消息),这样通知消息就有机会能被子窗口自身进行处理. 2.MFC中引入消息反射的原因: ...

  4. UI编辑器

    本篇教程通过制作捕鱼达人的启动界面来说明CocoStudio UI编辑器的用法.先看看效果图 好了,下面一步一步的动手做吧! 1.打开软件 2.新建项目 依次打开软件主界面左上角菜单栏的:“文件”-- ...

  5. php session 管理

    function do_login(){ //获取用户名和密码信息,和数据库中比对 echo 111111111; dump($_POST); dump($_SESSION); echo 222222 ...

  6. 什么是VSync

    VSync是垂直同期(Vertical Synchronization)的简称.主要的思路是将你的FPS和显示器的刷新率同期起来.其目的是避免一种称之为"撕裂"的现象.再以下我将具 ...

  7. Swift - 移除页面视图上的所有元素

    下面代码可以遍历移除页面视图上的所有元件 1 2 3 4 5 6 //清空所有子视图 func clearViews() {     for v in self.view.subviews as [U ...

  8. 超声波模块SRF05

    //////////////////////////////////////////////////////////////////////////////// // //     PIC16F877 ...

  9. hadoop源码下载地址

    http://svn.apache.org/repos/asf/hadoop/common/branches/

  10. 文档数据库RavenDB-介绍与初体验

    文档数据库RavenDB-介绍与初体验 阅读目录 1.RavenDB概述与特性 2.RavenDB安装 3.C#开发初体验 4.RavenDB资源 不知不觉,“.NET平台开源项目速览“系列文章已经1 ...