一步一步学动画[1]:Silverlight中Animation的应用
动画是快速播放一系列图像(其中每个图像与下一个图像略微不同)给人造成的一种幻觉。大脑感觉这组图像是一个变化的场景。在电影中,摄像机每秒钟拍摄许多照片(帧),便可使人形成这种幻觉。用投影仪播放这些帧时,观众便可以看电影了。在 Silverlight 中,通过对对象的个别属性应用动画,可以对对象进行动画处理。例如,若要使 UIElement 增大,需对其 Width 和 Height 属性进行动画处理。若要使 UIElement 逐渐从视野中消失,可以对其 Opacity 属性进行动画处理。可以对 Silverlight 中许多对象的属性进行动画处理。
说明:在 Silverlight 中,您只能对值类型为 Double、Color或 Point 的属性执行简单的动画处理。此外,还可以使用 ObjectAnimationUsingKeyFrames 对其他类型的属性进行动画处理,但是这需要使用离散内插(从一个值跳到另一个值),而多数人认为这不是真正的动画。
2、Animation示例:页面内物件淡入淡出效果
本示例使用 DoubleAnimation(一种生成 Double 值的动画类型)对 Rectangle 的 Opacity 属性进行动画处理。因此,Rectangle 将逐渐进入视野并逐渐从视野中消失。
【1】创建一个 Rectangle 元素:
<StackPanel>
<Rectangle MouseLeftButtonDown="Mouse_Clicked"
x:Name="MyAnimatedRectangle"
Width="100" Height="100" Fill="Blue" />
</StackPanel>
【2】创建 DoubleAnimation:
由于 Opacity 属性的类型是 Double,因此需要一个生成 Double 值的动画。DoubleAnimation 就是这样一种动画;它可以创建两个 Double 值之间的过渡。若要指定 DoubleAnimation 的起始值,可设置其 From 属性。若要指定其终止值,可设置其 To 属性。
<DoubleAnimation From="1.0" To="0.0" Duration="0:0:1"
AutoReverse="True" RepeatBehavior="Forever"/>
其中,Duration是指从其起始值过渡为目标值所需的时间。AutoReverse说明动画会重复运行,而RepeatBehavior则指明了这个动画会无限期的重复下去。
【3】创建 Storyboard 对象:
<Storyboard>
<DoubleAnimation From="1.0" To="0.0" Duration="0:0:1"
AutoReverse="True" RepeatBehavior="Forever" />
</Storyboard>
上面的代码创建了一个Storyboard并把动画放置入内。而后要使用 TargetName 附加属性指定要进行动画处理的对象。在下面的代码中,为 DoubleAnimation 指定了一个目标名称 myAnimatedRectangle,这是要进行动画处理的对象的名称。
<Storyboard>
<DoubleAnimation
Storyboard.TargetName="MyAnimatedRectangle"
From="1.0" To="0.0" Duration="0:0:1"
AutoReverse="True" RepeatBehavior="Forever" />
</Storyboard>
最后使用 TargetProperty 附加属性指定要进行动画处理的属性。在下面的代码中,动画被配置为面向 Rectangle 的 Opacity 属性。
<Storyboard>
<DoubleAnimation
Storyboard.TargetName="MyAnimatedRectangle"
Storyboard.TargetProperty="Opacity"
From="1.0" To="0.0" Duration="0:0:1"
AutoReverse="True" RepeatBehavior="Forever" />
</Storyboard>
【4】将Storyboard与事件相关联
接下来您需要指定何时开始播放动画。可以使用事件执行此操作。
1.将演示图板作为一种资源。将 Storyboard 放入一个资源块内,以便您能够轻松地自代码引用该 Storyboard,以执行开始、停止、暂停和继续等操作。下面的标记显示 StackPanel 对象资源块中声明的 Storyboard。请注意,您可以在任意资源块中声明 Storyboard,只要该资源块与您希望进行动画处理的对象位于同一个作用域中。如下面的代码:
<StackPanel>
<StackPanel.Resources>
<!-- Animates the rectangle's opacity. -->
<Storyboard x:Name="myStoryboard">
<DoubleAnimation
Storyboard.TargetName="MyAnimatedRectangle"
Storyboard.TargetProperty="Opacity"
From="1.0" To="0.0" Duration="0:0:1"
AutoReverse="True" RepeatBehavior="Forever" />
</Storyboard>
</StackPanel.Resources>
<Rectangle
x:Name="MyAnimatedRectangle"
Width="100" Height="100" Fill="Blue" />
</StackPanel>
2.将事件附加到某一元素。您可以使用多种事件来启动动画,包括鼠标相关事件,如在用户单击某一对象时引发的 MouseLeftButtonDown,或是在首次加载对象时引发的 Loaded 事件。有关事件的更多信息,请参见 Silverlight 的事件概述。在本示例中,MouseLeftButtonDown 事件附加到 Rectangle,这样用户单击矩形时将引发该事件。
<Rectangle MouseLeftButtonDown="Mouse_Clicked"
x:Name="MyAnimatedRectangle"
Width="100" Height="100" Fill="Blue" />
3.从事件处理程序控制动画。 Storyboard 提供多种方法,这些方法允许您控制 Storyboard 动画的播放,包括 Begin、Stop、Pause 和 Resume。本示例使用 Begin 方法,该方法在用户单击矩形并引发 MouseLeftButtonDown 事件时启动动画。
// When the user clicks the Rectangle, the animation begins.
private void Mouse_Clicked(object sender, MouseEventArgs e)
{
myStoryboard.Begin();
}
【5】最后是完整的运行代码:
<UserControl x:Class="animation_ovw_intro.Page"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Width="400" Height="300">
<StackPanel>
<StackPanel.Resources>
<!-- Animates the rectangle's opacity. -->
<Storyboard x:Name="myStoryboard">
<DoubleAnimation
Storyboard.TargetName="MyAnimatedRectangle"
Storyboard.TargetProperty="Opacity"
From="1.0" To="0.0" Duration="0:0:1"
AutoReverse="True"
RepeatBehavior="Forever" />
</Storyboard>
</StackPanel.Resources>
<TextBlock Margin="10">Click on the rectangle to start the animation.</TextBlock>
<Rectangle MouseLeftButtonDown="Mouse_Clicked"
x:Name="MyAnimatedRectangle"
Width="100" Height="100" Fill="Blue" />
</StackPanel>
</UserControl>
//后台代码
private void Mouse_Clicked(object sender, MouseEventArgs e)
{
myStoryboard.Begin();
}
参考资料:MSDN
转载于:https://www.cnblogs.com/wpdev/archive/2011/03/27/1997257.html
一步一步学动画[1]:Silverlight中Animation的应用相关推荐
- html中定义动画anima,css中animation怎么用
css中animation怎么用 animation比较类似于 flash 中的逐帧动画,逐帧动画就像电影的播放一样,可以让很多其它CSS属性产生动画效果,比如color, background-co ...
- css动画定义,CSS3中Animation动画的定义和调用
现在经常会看到一些门户网站的专题使用到CSS3的动画,咋也不能落伍,在此这梳理下动画知识吧,便于后面用到.接下来介绍下Animation动画的定义和调用,在介绍Animation之前需要了解下Keyf ...
- 一步一步学Silverlight 2系列(24):与浏览器交互相关辅助方法
概述 Silverlight 2 Beta 1版本发布了,无论从Runtime还是Tools都给我们带来了很多的惊喜,如支持框架语言Visual Basic, Visual C#, IronRuby, ...
- 一步一步学Silverlight 2系列(18):综合实例之RSS阅读器
概述 Silverlight 2 Beta 1版本发布了,无论从Runtime还是Tools都给我们带来了很多的惊喜,如支持框架语言Visual Basic, Visual C#, IronRuby, ...
- 一步一步学Silverlight 2系列(32):图形图像综合实例—“功夫之王”剧照播放_转载...
概述 Silverlight 2 Beta 1版本发布了,无论从Runtime还是Tools都给我们带来了很多的惊喜,如支持框架语言Visual Basic, Visual C#, IronRuby, ...
- 一步一步学Silverlight 2系列(21):如何在Silverlight中调用JavaScript
概述 Silverlight 2 Beta 1版本发布了,无论从Runtime还是Tools都给我们带来了很多的惊喜,如支持框架语言Visual Basic, Visual C#, IronRuby, ...
- 一步一步学Silverlight 2系列(23):Silverlight与HTML混合之无窗口模式
概述 Silverlight 2 Beta 1版本发布了,无论从Runtime还是Tools都给我们带来了很多的惊喜,如支持框架语言Visual Basic, Visual C#, IronRuby, ...
- 一步一步学Silverlight 2系列(22):在Silverlight中如何用JavaScript调用.NET代码_转载...
概述 Silverlight 2 Beta 1版本发布了,无论从Runtime还是Tools都给我们带来了很多的惊喜,如支持框架语言Visual Basic, Visual C#, IronRuby, ...
- 一步一步学Silverlight 2系列(22):在Silverlight中如何用JavaScript调用.NET代码
概述 Silverlight 2 Beta 1版本发布了,无论从Runtime还是Tools都给我们带来了很多的惊喜,如支持框架语言Visual Basic, Visual C#, IronRuby, ...
最新文章
- android五大布局的用法,android:stretchColumns用法
- window document树
- 0810 - 代码,还是得一行行写
- 前端学习(2784):首页轮播图的渲染
- c#扩展方法的理解(二:接口)
- MySQL笔记-Windows安装MySQL5.7
- 用css3和ico图片实现火狐社区的分享图标
- Android系统onKeyDown监控/拦截/监听/屏蔽返回键、菜单键和Home键
- linux ibus中文,Ubuntu 14.10系统中IBUS 中文输入法安装的图文教程
- 亚马逊与 Uber,软件开发的方式有何不同?
- 雷达篇(二)线性调频信号公式推导及matlab仿真
- Maven学习—Nexus3私服搭建
- 数字电视输出标准规范和BT601/BT709/BT2020色域转换方法资料整理
- 支持向量机(SVM)的原理推导及解释
- Android DataBing基础使用 +ViewModel 及setvalue过程及原理
- html页面线条走动特效,html5 canvas绘制随机游动线条动画特效
- 【python Excel】openpyxl插入图片到表格,支持内存图片对象
- Tiled Map 地图素材大全下载
- 小程序实现左右菜单联动(-)
- 怎么判断冠词用a还是an_不定冠词a和an有哪些用法