《Programming WPF》翻译 第8章 5.创建动画过程

简介: 原文:《Programming WPF》翻译 第8章 5.创建动画过程所有在这章使用xaml举例说明的技术,都可以在代码中使用,正如你希望的。可是,代码可以使用动画在某种程度上不可能在xaml中实现的。
原文: 《Programming WPF》翻译 第8章 5.创建动画过程

所有在这章使用xaml举例说明的技术,都可以在代码中使用,正如你希望的。可是,代码可以使用动画在某种程度上不可能在xaml中实现的。

在代码中创建动画需要稍微多一点的努力——比使用标记。然而,代码提供了更多的弹性。你可以在运行期计算属性,而不是在xaml中硬编码,从而支持你的动画适应环境。例如,这可能是有用的——在当前窗体的大小基于动画的参数。

使用代码一个额外的好处是我们不需要使用storyboard,替代的,我们可以创建一些被称为“本地动画”的对象。“本地动画”直接应用到一个特定的属性,这并不是storyboard的一部分。对于简单的动画,“本地动画”的使用不比storyboard简单。猜想你的标记中包含下面的椭圆:

< Ellipse  x:Name =”theEllipse”  Width =”50”  Height =”100”  Fill =”Red”  />

你可以为此在代码中创建和加载一个“本地动画”,如图8-26所示:

示例8-26

DoubleAnimation widthAnimation  =   new  DoubleAnimation( );
widthAnimation.By 
=   100 ;
widthAnimation.Duration 
=   new  Duration(TimeSpan.FromSeconds( 2 ));
theEllipse.PersistentAnimations[Ellipse.WidthProperty] 
=
    widthAnimation;

Clock clock 
=  theEllipse.PersistentAnimations.GetClock(Ellipse.WidthProperty);
clock.ClockController.Begin( );

我们不仅不需要把这些放入

storyboard 集合中我们还不需要SetterTimeline 。使用storyboard SetterTimeline 需要指出哪个对象和属性被设置了动画。使用“本地动画”,你可以直接将动画添加到目标对象的PersistentAnimation 集合,详细指出该属性作为集合中的索引。

目录
相关文章
|
3天前
|
C#
WPF —— 动画缩放变换
`ScaleTransform`用于二维x-y坐标系中对象的缩放,可沿X或Y轴调整。在故事板中,通过RenderTransform.ScaleX和ScaleY属性控制缩放。示例代码展示了如何设置按钮的RenderTransformOrigin、Background等属性,并通过LayoutTransform应用ScaleTransform。当鼠标进入按钮时,EventTrigger启动DoubleAnimation实现X和Y轴的缩放动画。最后,展示了如何将动画集成到自定义按钮样式中。
18 0
|
3天前
|
文字识别 C# 开发者
WPF开源的一款免费、开箱即用的翻译、OCR工具
WPF开源的一款免费、开箱即用的翻译、OCR工具
|
8月前
|
C#
WPF技术之动画系列-上下运动
本例子展现动画小球上下循环运动
135 0
|
API C# 索引
WPF中的动画——(一)基本概念
原文:WPF中的动画——(一)基本概念 WPF的一个特点就是支持动画,我们可以非常容易的实现漂亮大方的界面。首先,我们来复习一下动画的基本概念。计算机中的动画一般是定格动画,也称之为逐帧动画,它通过每帧不同的图像连续播放,从而欺骗眼和脑产生动画效果。
1038 0
|
C# 测试技术
WPF中的动画——(二)From/To/By 动画
原文:WPF中的动画——(二)From/To/By 动画 我们所实现的的动画中,很大一部分是让一个属性在起始值和结束值之间变化,例如,我在前文中实现的改变宽度的动画:     var widthAnimation = new DoubleAnimation()    {        From = 0,        To = 320,        Duration = TimeSpan.
972 0
|
算法 C#
WPF中的动画——(五)关键帧动画
原文:WPF中的动画——(五)关键帧动画 与 From/To/By 动画类似,关键帧动画以也可以以动画形式显示目标属性值。 和From/To/By 动画不同的是, From/To/By 动画只能控制在两个状态之间变化,而关键帧动画则可以在多个状态之间变化,例如,对于前面那个改变按钮宽度的例子,如果我们要实现如下效果: 在2秒时将宽度从 0变为350 在7秒时将宽度变为50 在9秒的时候将其宽度变为200 虽然我们可以用三个From/To/By 动画组合实现类似效果,但是这样一来麻烦,二来要感知动画完成事件,不方便在XAML中使用。
1335 0
|
C#
WPF中的动画——(四)缓动函数
原文:WPF中的动画——(四)缓动函数 缓动函数可以通过一系列公式模拟一些物理效果,如实地弹跳或其行为如同在弹簧上一样。它们一般应用在From/To/By动画上,可以使得其动画更加平滑。     var widthAnimation = new DoubleAnimation()    {    ...
934 0
|
C#
WPF中的动画——(三)时间线(TimeLine)
原文:WPF中的动画——(三)时间线(TimeLine) 时间线(TimeLine)表示时间段。 它提供的属性可以让控制该时间段的长度、开始时间、重复次数、该时间段内时间进度的快慢等等。在WPF中内置了如下几种TimeLine: AnimationTimeline :前面已经介绍过,主要用于属性的过渡,这种是最常见的动画。
1438 0
|
C# 容器 调度
WPF中的动画——(六)演示图板
原文:WPF中的动画——(六)演示图板 前面所介绍的都是单一的动画,它只能修改单一属性。有的时候,我们需要将一组动画一起进行,对于一个按钮,我们可能有如下需求: 选择该按钮时,该按钮增大并更改颜色。
739 0
|
前端开发 C#
WPF中的动画——(五)路径动画
原文:WPF中的动画——(五)路径动画 路径动画是一种专门用于将对象按照指定的Path移动的动画,虽然我们也可以通过控制动画的旋转和偏移实现对象的移动,但路径动画更专业,它的实现更加简洁明了。 路径动画中最常用的是MatrixAnimationUsingPath,它通常用于控制对象的MatrixT...
1257 0