动画类型

2017-08-03 11:27:09来源:CSDN作者:qq_23018459人点击

分享


动画类型

由于动画生成属性值,不同的动画类型存在不同的属性类型。 采用属性进行动画处理Double,如宽度的元素属性的使用会产生一个动画Double值。 采用属性进行动画处理点,使用生成的动画点值,等等。 由于不同的属性类型的数目,几个动画类中的System.Windows.Media.Animation命名空间。 幸运的是,它们遵循严格的命名约定,可方便地了解它们之间的区别︰

  • < 类型1> 动画

    也称为"From/To/By"或"基本"动画,这些设置动画效果开始值和目标值之间,或通过向其起始值添加偏移量的值。

    • 若要指定一个起始值,设置动画的 From 属性。

    • 若要指定的结束值,设置动画的 To 属性。

    • 若要指定的偏移量的值,设置动画的 By 属性。

    此概述中的示例使用这些动画,因为它们是最容易使用。 From/To/By 动画概述中详细描述了 From/To/By 动画。

  • < 类型1> 备选项

    关键帧动画可以比 From/To/By 动画功能更强大,因为您可以指定任意数量的目标值,甚至可以控制它们的插值方法。 某些类型只使用关键帧动画进行动画处理。 中详细描述了关键帧动画关键帧动画概述。

  • < 类型1> AnimationUsingPath

    路径动画,可以使用几何路径来生成动画的值。

  • < 类型1> AnimationBase

    抽象类在实现时进行动画处理<>类型1> 的值。 此类用作类的基类<>类型1> 动画和<>类型1> 备选项的类。 您必须直接处理这些类,仅当你想要创建自定义动画。 否则,请使用<>类型1> 动画或关键帧<>类型1> 动画。

在大多数情况下,您将想要使用<>类型1> 动画类,如DoubleAnimation和ColorAnimation。

下表显示了一些常见动画类型以及同它们使用某些属性。

属性类型对应的 (From/To/By) 的基本动画对应的关键帧动画对应的路径动画用法示例
颜色ColorAnimationColorAnimationUsingKeyFramesAnimate the Color of a SolidColorBrush or a GradientStop.
双精度DoubleAnimationDoubleAnimationUsingKeyFramesDoubleAnimationUsingPathAnimate the Width of a DockPanel or the Height of a Button.
PointAnimationPointAnimationUsingKeyFramesPointAnimationUsingPath进行动画处理中心位置EllipseGeometry。
字符串StringAnimationUsingKeyFramesAnimate the Text of a TextBlock or the Content of a Button.

动画是时间线

所有动画类型都继承自时间线类; 因此,所有动画都是特殊的类型的时间线。 一个时间线定义的时间段。 您可以指定计时行为时间线的︰ 其持续时间,它是重复发生,或甚至多快时间走得多少次。

因为动画是时间线,它还表示一个时间段。 动画还计算输出值逐步的过程但是其指定的时间段 (或持续时间)。 作为动画运行时,或"播放"中,它将更新与之关联的属性。

有三个常用的计时属性持续时间,AutoReverse,和RepeatBehavior。

持续时间属性

如前文所述,时间线表示时间的段。 段的长度由持续时间时间线上,通常通过使用指定的TimeSpan值。 当时间线达到其持续时间的末尾时,则已经完成一次迭代。

动画使用其持续时间属性来确定其当前值。 如果未指定持续时间值动画,它使用 1 秒,这是默认值。

下面的语法演示的简化的版本可扩展应用程序标记语言 (XAML)特性语法持续时间属性。

hours : minutes : seconds

下表显示了几个持续时间设置及其生成的值。

设置生成的值
0:0:5.55.5 秒。
0:30:5.530 分钟 5.5 秒。
1:30:5.51 小时 30 分钟,和 5.5 秒。

指定的一种方法持续时间在代码中是使用FromSeconds方法来创建TimeSpan,然后,声明一个新持续时间结构使用,而这些TimeSpan。

有关详细信息持续时间值和完整可扩展应用程序标记语言 (XAML)语法,请参阅持续时间结构。

AutoReverse

AutoReverse属性指定时间线的向后播放在达到结束后其持续时间。 如果此动画属性设置为true,动画则完全反转后到达末尾其持续时间、 播放从其终止值返回到其起始值。 默认情况下,此属性是false

RepeatBehavior

RepeatBehavior属性指定的时间线播放的次数。 默认情况下,时间线有个迭代计数1.0,这意味着他们玩一个游戏时间,并执行不会重复。

有关这些属性和其他工具的详细信息,请参阅计时行为概述。

与某个属性应用动画

前面几节描述了不同类型的动画和其执行时间属性。 本部分说明如何将动画应用于要进行动画处理的属性。 情节提要对象提供了一种方法将动画应用于属性。 一个情节提要是容器时间线提供有关它所包含的动画的目标信息。

目标对象和属性

情节提要类提供了TargetName和TargetProperty附加属性。 通过在动画上设置这些属性,可指示动画内容进行动画处理。 但是,动画可以针对一个对象之前,该对象必须通常为指定名称。

指定将名称传递给FrameworkElement不同于分配将名称传递给Freezable对象。 大多数控件和面板是框架元素;但是,大多数纯粹图形对象,例如画笔、 转换和几何图形,是 freezable 对象。 如果您不能确定某类型是否是FrameworkElement或Freezable,请参阅继承层次结构其参考文档的部分。

  • 若要使FrameworkElement成为动画目标,则指定的名称通过设置其名称属性。 在代码中,您必须使用寄存器名方法以向它属于页上注册的元素名称。

  • 若要使Freezable对象中的动画目标XAML,您使用X:name 指令以将其分配一个名称。 在代码中,您只需使用寄存器名方法以向它属于页上注册该对象。

以下各节提供举例说明如何为元素命名XAML和代码。 有关命名和确定目标的更多详细信息,请参阅演示图板概述。

应用和启动情节提要

若要启动演示图板XAML,与之相关EventTrigger。EventTrigger是一个对象,描述了指定的事件发生时要采取的操作。 其中一个这些操作可以是BeginStoryboard用于启动你的情节提要的操作。 事件触发器是在概念上类似于事件处理程序,因为它们使你可以指定您的应用程序如何响应特定事件。 与事件处理程序不同,事件触发器可全面地描述了在XAML; 不不需要任何其他代码。

若要启动情节提要在代码中,您可以使用EventTrigger或使用开始方法情节提要类。

以交互方式控制演示图板

前面的示例演示如何启动情节提要事件的发生时间。 您可以采用交互方式控制情节提要启动后对它︰ 可以 pause、 resume、 停止、 前进至其填充周期、 搜索和删除情节提要。 有关详细信息和示例演示如何以交互方式控制情节提要,请参阅演示图板概述。

动画结束后,会发生什么情况?

FillBehavior属性指定时间线结束时的行为。 默认情况下,时间线开始填充结束的时候。 是一个动画填充保持其最终输出值。

DoubleAnimation在前面的示例不会结束因为其RepeatBehavior属性设置为永远。 下面的示例使用类似的动画,进行动画处理一个矩形。 与上述示例中,不同RepeatBehavior和AutoReverse此动画的属性保留为其默认值。 因此,该动画从进展 1 为 0 时间超过五秒,然后停止。

XAML复制
    <Rectangle      Name="MyRectangle"      Width="100"       Height="100"      Fill="Blue">      <Rectangle.Triggers>        <!-- Animates the rectangle's opacity. -->        <EventTrigger RoutedEvent="Rectangle.Loaded">          <BeginStoryboard>            <Storyboard>              <DoubleAnimation                Storyboard.TargetName="MyRectangle"                 Storyboard.TargetProperty="Opacity"                From="1.0" To="0" Duration="0:0:5" />            </Storyboard>          </BeginStoryboard>        </EventTrigger>      </Rectangle.Triggers>    </Rectangle>

C#VB复制
            DoubleAnimation myDoubleAnimation = new DoubleAnimation();            myDoubleAnimation.From = 1.0;            myDoubleAnimation.To = 0.0;            myDoubleAnimation.Duration = new Duration(TimeSpan.FromSeconds(5));

由于其FillBehavior未发生变化,其默认值,即HoldEnd,动画将保持其最终值为 0,它何时结束。 因此,不透明度矩形仍然为动画之后的 0 的结束。 如果您设置不透明度为其他值在该矩形,代码似乎不起作用,因为动画仍将影响不透明度属性。

若要重新获得的代码中的动态属性控制的一种方法是使用BeginAnimation方法并指定为 nullAnimationTimeline参数。 有关详细信息和示例,请参阅属性之后进行动画处理将其设置使用演示图板。

请注意,尽管设置属性值具有Active或填充动画似乎不起作用,属性值确实更改。 有关详细信息,请参阅动画和计时系统概述。

数据绑定和动画处理

大多数动画的属性可以进行数据绑定或动画;例如,您可以设置动画效果持续时间属性DoubleAnimation。 但是,由于计时系统工作的方式,数据绑定或动画的动画不类似于其他数据绑定或动画处理的对象。 若要了解它们的行为,它有助于理解其含义将动画应用于属性。

介绍了如何进行动画处理的上一节中的示例,请参阅不透明度的矩形。 当加载上一示例中的矩形时,它的事件触发器适用情节提要。 计时系统会创建一份情节提要及其动画。 这些副本均已冻结 (使其只读的) 和时钟从中创建对象。 这些时钟执行目标的属性进行动画处理的实际工作。

计时系统创建的时钟DoubleAnimation并将其应用到的对象和属性所指定的TargetName和TargetProperty的DoubleAnimation。 计时系统在这种情况下,应用到时钟不透明度名为"MyRectangle。"的对象属性

尽管对于还创建一个时钟情节提要,时钟不应用于任何属性。 其目的是控制其子时钟,为创建的时钟DoubleAnimation。

供动画使用,以反映数据绑定或动画更改,必须重新生成它的时钟。 时钟不会重新生成为你自动。 若要使动画反映的变化,其情节提要,通过重新应用使用BeginStoryboard或开始方法。 在使用上述任一方法时,将重新启动动画。 在代码中,您可以使用Seek方法将演示图板移回到其以前的位置。

有关举例说明如何数据绑定动画,请参阅密钥样条动画示例。 有关动画和计时系统的工作原理的详细信息,请参阅动画和计时系统概述。

其他方法进行动画处理

本概述中的示例演示如何使用演示图板进行动画处理。 当您使用的代码时,您可以其它几种方法中创建动画。 有关详细信息,请参阅属性动画技术概述。


最新文章

123

最新摄影

微信扫一扫

第七城市微信公众平台