博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Windows Phone开发(37):动画之ColorAnimation 转:http://blog.csdn.net/tcjiaan/article/details/7526026...
阅读量:5330 次
发布时间:2019-06-14

本文共 2635 字,大约阅读时间需要 8 分钟。

上一节中我们讨论了用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代码干完,注意理解,不是叫你打字练习啊。

[html] 
  1. <Grid>  
  2.     <Rectangle Margin="80,150">  
  3.         <Rectangle.Fill>  
  4.             <SolidColorBrush x:Name="sb" Color="Green"/>  
  5.         </Rectangle.Fill>  
  6.     </Rectangle>  
  7.     <Grid.Resources>  
  8.         <Storyboard x:Name="std">  
  9.             <ColorAnimation  
  10.                 Duration="0:0:1"  
  11.                 Storyboard.TargetName="sb"  
  12.                 Storyboard.TargetProperty="Color"  
  13.                 From="Red"  
  14.                 To="Blue"  
  15.                 RepeatBehavior="Forever"/>  
  16.         </Storyboard>  
  17.     </Grid.Resources>  
  18. </Grid>  

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

 

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

[csharp] 
  1. public MainPage()  
  2. {  
  3.     InitializeComponent();  
  4.     this.Loaded += (sender, e) => { std.Begin(); };  
  5. }  

 

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

 

 

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

 

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

[html] 
  1. <Grid>  
  2.     <Ellipse HorizontalAlignment="Center"  
  3.              VerticalAlignment="Center"  
  4.              Width="400" Height="400">  
  5.         <Ellipse.Fill>  
  6.             <RadialGradientBrush Center="0.5,0.5"  
  7.                                  RadiusX="0.5"  
  8.                                  RadiusY="0.5">  
  9.                 <GradientStop x:Name="g1" Color="Yellow" Offset="0"/>  
  10.                 <GradientStop x:Name="g2" Color="Green" Offset="0.5"/>  
  11.                 <GradientStop x:Name="g3" Color="Red" Offset="1"/>  
  12.             </RadialGradientBrush>  
  13.         </Ellipse.Fill>  
  14.     </Ellipse>  
  15.     <Grid.Resources>  
  16.         <Storyboard x:Name="std">  
  17.             <ColorAnimation  
  18.                 Duration="0:0:2"  
  19.                 Storyboard.TargetName="g1"  
  20.                 Storyboard.TargetProperty="Color"  
  21.                 From="LightBlue" To="Green"  
  22.                 RepeatBehavior="Forever"/>  
  23.             <ColorAnimation  
  24.                 Duration="0:0:3"  
  25.                 Storyboard.TargetName="g2"  
  26.                 Storyboard.TargetProperty="Color"  
  27.                 From="Orange" To="Snow"  
  28.                 RepeatBehavior="Forever"/>  
  29.             <ColorAnimation  
  30.                 Duration="0:0:1"  
  31.                 Storyboard.TargetName="g3"  
  32.                 Storyboard.TargetProperty="Color"  
  33.                 From="Yellow" To="Red"  
  34.                 RepeatBehavior="Forever"/>  
  35.         </Storyboard>  
  36.     </Grid.Resources>  
  37. </Grid>  

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

[csharp] 
  1. public Page1()  
  2. {  
  3.     InitializeComponent();  
  4.     this.Loaded += (sender, e) => { std.Begin(); };  
  5. }  

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

 

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

你可能感兴趣的文章
pycharm激活地址
查看>>
hdu 1207 四柱汉诺塔
查看>>
Vue 2.x + Webpack 3.x + Nodejs 多页面项目框架(上篇——纯前端多页面)
查看>>
display:none与visible:hidden的区别
查看>>
我的PHP学习之路
查看>>
【题解】luogu p2340 奶牛会展
查看>>
对PostgreSQL的 SPI_prepare 的理解。
查看>>
解决响应式布局下兼容性的问题
查看>>
京东静态网页练习记录
查看>>
使用DBCP连接池对连接进行管理
查看>>
【洛谷】【堆+模拟】P2278 操作系统
查看>>
hdu3307 欧拉函数
查看>>
Spring Bean InitializingBean和DisposableBean实例
查看>>
Solr4.8.0源码分析(5)之查询流程分析总述
查看>>
[Windows Server]安装系统显示“缺少计算机所需的介质驱动程序”解决方案
查看>>
[容斥][dp][快速幂] Jzoj P5862 孤独
查看>>
Lucene 学习之二:数值类型的索引和范围查询分析
查看>>
软件开发工作模型
查看>>
Java基础之字符串匹配大全
查看>>
面向对象
查看>>