Windows Phone开发(37):动画之ColorAnimation
原文: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的更多相关文章
- Windows Phone开发(42):缓动动画
原文:Windows Phone开发(42):缓动动画 前面在讨论关键帧动画的时候,我有意把几个带缓动动画的关键帧动画忽略掉,如EasingColorKeyFrame.EasingDoubleKeyF ...
- Windows Phone开发(41):漫谈关键帧动画之下篇
原文:Windows Phone开发(41):漫谈关键帧动画之下篇 也许大家已经发现,其实不管什么类型的动画,使用方法基本是一样的,不知道大家总结出规律了没有?当你找到规律之后,你会发现真的可以举一反 ...
- Windows Phone开发(38):动画之PointAnimation
原文:Windows Phone开发(38):动画之PointAnimation PointAnimation也是很简单的,与前面说到的两个Animation是差不多的,属性也是一样的,如By.Fro ...
- Windows Phone开发(40):漫谈关键帧动画之中篇
原文:Windows Phone开发(40):漫谈关键帧动画之中篇 一.DiscreteDoubleKeyFrame 离散型关键帧动画,重点,我们理解一下"离散"的意思,其实你查一 ...
- Windows Phone开发(39):漫谈关键帧动画上篇
原文:Windows Phone开发(39):漫谈关键帧动画上篇 尽管前面介绍的几种动画会让觉得很好玩了,但是,不知道你是否发现,在前面说到的一系列XXXAnimation中,都有一个共同点,那就是仅 ...
- Windows Phone开发(36):动画之DoubleAnimation
原文:Windows Phone开发(36):动画之DoubleAnimation 从本节开始,我们将围绕一个有趣的话题展开讨论--动画. 看到动画一词,你一定想到Flash,毕竟WP应用的一个很重要 ...
- Windows Store App 过渡动画
Windows Store App 过渡动画 在开发Windows应用商店应用程序时,如果希望界面元素进入或者离开屏幕时显得自然和流畅,可以为其添加过渡动画.过渡动画能够及时地提示用户屏幕所发 ...
- Windows Phone开发(46):与Socket有个约会
原文:Windows Phone开发(46):与Socket有个约会 不知道大家有没有"谈Socket色变"的经历?就像我一位朋友所说的,Socket这家伙啊,不得已而用之.哈,S ...
- Windows Phone开发(43):推送通知第一集——Toast推送
原文:Windows Phone开发(43):推送通知第一集--Toast推送 好像有好几天没更新了,抱歉抱歉,最近"光荣"地失业,先是忙于寻找新去处,唉,暂时没有下文.而后又有一 ...
随机推荐
- 树莓派学习笔记——使用文件IO操作GPIO SysFs方式
0 前言 本文描写叙述假设通过文件IO sysfs方式控制树莓派 GPIO端口.通过sysfs方式控制GPIO,先訪问/sys/class/gpio文件夹,向export文件写入GPIO编号, ...
- Java-对象多态性
class A { public void fun1() { System.out.println("<----A------>"); } public v ...
- MFC的消息反射机制
1.消息反射解释: 父窗口将子窗口发给它的通知消息,首先反射回子窗口进行处理(即给子窗口一个机会,让子窗口处理此消息),这样通知消息就有机会能被子窗口自身进行处理. 2.MFC中引入消息反射的原因: ...
- UI编辑器
本篇教程通过制作捕鱼达人的启动界面来说明CocoStudio UI编辑器的用法.先看看效果图 好了,下面一步一步的动手做吧! 1.打开软件 2.新建项目 依次打开软件主界面左上角菜单栏的:“文件”-- ...
- php session 管理
function do_login(){ //获取用户名和密码信息,和数据库中比对 echo 111111111; dump($_POST); dump($_SESSION); echo 222222 ...
- 什么是VSync
VSync是垂直同期(Vertical Synchronization)的简称.主要的思路是将你的FPS和显示器的刷新率同期起来.其目的是避免一种称之为"撕裂"的现象.再以下我将具 ...
- Swift - 移除页面视图上的所有元素
下面代码可以遍历移除页面视图上的所有元件 1 2 3 4 5 6 //清空所有子视图 func clearViews() { for v in self.view.subviews as [U ...
- 超声波模块SRF05
//////////////////////////////////////////////////////////////////////////////// // // PIC16F877 ...
- hadoop源码下载地址
http://svn.apache.org/repos/asf/hadoop/common/branches/
- 文档数据库RavenDB-介绍与初体验
文档数据库RavenDB-介绍与初体验 阅读目录 1.RavenDB概述与特性 2.RavenDB安装 3.C#开发初体验 4.RavenDB资源 不知不觉,“.NET平台开源项目速览“系列文章已经1 ...