DoubleAnimation 类
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
public ref class DoubleAnimation sealed : Timeline
/// [Windows.Foundation.Metadata.Activatable(65536, "Microsoft.UI.Xaml.WinUIContract")]
/// [Windows.Foundation.Metadata.ContractVersion(Microsoft.UI.Xaml.WinUIContract, 65536)]
/// [Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
/// [Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.Both)]
class DoubleAnimation final : Timeline
[Windows.Foundation.Metadata.Activatable(65536, "Microsoft.UI.Xaml.WinUIContract")]
[Windows.Foundation.Metadata.ContractVersion(typeof(Microsoft.UI.Xaml.WinUIContract), 65536)]
[Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
[Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.Both)]
public sealed class DoubleAnimation : Timeline
Public NotInheritable Class DoubleAnimation
Inherits Timeline
<DoubleAnimation />
- 继承
- 属性
示例
以下示例演示如何使用 DoubleAnimation 创建一个在加载后淡入和淡出视图的矩形。
<StackPanel>
<StackPanel.Resources>
<Storyboard x:Name="myStoryboard">
<DoubleAnimation
Storyboard.TargetName="MyAnimatedRectangle"
Storyboard.TargetProperty="Opacity"
From="1.0" To="0.0" Duration="0:0:3"
AutoReverse="True" RepeatBehavior="Forever" />
</Storyboard>
</StackPanel.Resources>
<Rectangle Loaded="Start_Animation" x:Name="MyAnimatedRectangle"
Width="100" Height="100" Fill="Blue" />
</StackPanel>
// Start the animation when the object loads
private void Start_Animation(object sender, RoutedEventArgs e)
{
myStoryboard.Begin();
}
<Canvas>
<Canvas.Resources>
<Storyboard x:Name="myStoryboard">
<!-- Animate the TranslateTransform's X property
from 0 to 350, then 50, then 200 over 10 seconds. -->
<DoubleAnimationUsingKeyFrames
Storyboard.TargetName="MyAnimatedTranslateTransform"
Storyboard.TargetProperty="X"
Duration="0:0:10" EnableDependentAnimation="True">
<!-- Using a LinearDoubleKeyFrame, the rectangle moves
steadily from its starting position to 500 over
the first 3 seconds. -->
<LinearDoubleKeyFrame Value="500" KeyTime="0:0:3" />
<!-- Using a DiscreteDoubleKeyFrame, the rectangle suddenly
appears at 400 after the fourth second of the animation. -->
<DiscreteDoubleKeyFrame Value="400" KeyTime="0:0:4" />
<!-- Using a SplineDoubleKeyFrame, the rectangle moves
back to its starting point. The animation starts out slowly at
first and then speeds up. This KeyFrame ends after the 6th
second. -->
<SplineDoubleKeyFrame KeySpline="0.6,0.0 0.9,0.00" Value="0" KeyTime="0:0:6" />
</DoubleAnimationUsingKeyFrames>
</Storyboard>
</Canvas.Resources>
<Rectangle PointerPressed="Pointer_Clicked" Fill="Blue"
Width="50" Height="50">
<Rectangle.RenderTransform>
<TranslateTransform x:Name="MyAnimatedTranslateTransform" />
</Rectangle.RenderTransform>
</Rectangle>
</Canvas>
// Start the animation when the object loads
private void Start_Animation(object sender, RoutedEventArgs e)
{
myStoryboard.Begin();
}
注解
使用 DoubleAnimation 对类型为 Double 的任何依赖属性的属性值进行动画 处理。
有时,你需要使用间接属性目标,以便以另一个对象的子属性为目标,该子属性是目标上的属性的值。 例如,若要对 UIElement 的 RenderTransform 的 X 组件进行动画处理,需要引用一些中间对象属性值,直到间接属性路径中的最后一步真正是 Double 值,就像 TranslateTransform.X 一样。 此示例中用于 Storyboard.TargetProperty 的正确字符串是“ (UIElement.RenderTransform) . (TranslateTransform.X) ”。 有关间接属性目标和其他情节提要动画概念的详细信息,请参阅 情节提要动画。
DoubleAnimation 通常至少设置了 一个 From、 By 或 To 属性,但从来不是全部三个属性。
- 仅从: 动画从 From 属性指定的值进展到要进行动画处理的属性的基值。
- From 和 To: 动画从 From 属性指定的值进展到 To 属性指定的值。
- 发件人和 By: 动画从 From 属性指定的值进展到 由 From 和 By 属性之和指定的值。
- 仅限: 动画从动画属性的基值或上一个动画的输出值进展到 To 属性指定的值。
- 仅按: 动画从要进行动画处理的属性的基值或上一个动画的输出值到该值和 By 属性指定的值之和。
不能使用 DoubleAnimation 对 Point 的 X 和 Y 值进行动画处理,因为这些属性不是依赖属性, (Point 是一种结构,不能具有依赖属性。) 相反,请使用 PointAnimation 对具有 Point 值的依赖属性进行动画处理。
也不能使用 DoubleAnimation 对 int 值或 字节 值进行动画处理。 相反,必须使用 ObjectAnimationUsingKeyFrames,这不会提供内插行为,因此可能需要定义多个关键帧才能获得相当流畅的动画。 与 UI 相关的依赖属性使用 int 值或 字节 值并不多,因此,除了自定义属性之外,这不应是一种常见方案。
DoubleAnimation 的 From、 By 或 To 属性严格不是 Double。 相反,对于 Double,这些是可为 Null 的。 这些参数的默认值为 null,而不是 0。 该 null 值是动画系统区分你尚未专门设置值的方式。 Visual C++ 组件扩展 (C++/CX) 不具有 Nullable 类型,因此它转而使用 IReference。
构造函数
DoubleAnimation() |
初始化 DoubleAnimation 类的新实例。 |
属性
AutoReverse |
获取或设置一个值,该值指示时间线在完成向前迭代后是否按相反的顺序播放。 (继承自 Timeline) |
BeginTime |
获取或设置此 时间线 应开始的时间。 (继承自 Timeline) |
By |
获取或设置动画更改其起始值所依据的总数。 |
ByProperty |
标识 By 依赖属性。 |
Dispatcher |
始终在Windows 应用 SDK应用中返回 |
DispatcherQueue |
|
Duration |
获取或设置此时间线播放的时间长度,而不是计数重复。 (继承自 Timeline) |
EasingFunction |
获取或设置应用于此动画的缓动函数。 |
EasingFunctionProperty |
标识 EasingFunction 依赖属性。 |
EnableDependentAnimation |
获取或设置一个值,该值声明是否应允许被视为依赖动画的动画属性使用此动画声明。 |
EnableDependentAnimationProperty |
标识 EnableDependentAnimation 依赖属性。 |
FillBehavior |
获取或设置一个值,该值指定动画在其活动周期结束时的行为方式。 (继承自 Timeline) |
From |
获取或设置动画的起始值。 |
FromProperty |
标识 From 依赖属性。 |
RepeatBehavior |
获取或设置此时间线的重复行为。 (继承自 Timeline) |
SpeedRatio |
获取或设置相对于其父级的速率,此时此 时间线的进度。 (继承自 Timeline) |
To |
获取或设置动画的结束值。 |
ToProperty |
标识 To 依赖属性。 |
方法
ClearValue(DependencyProperty) |
清除依赖属性的本地值。 (继承自 DependencyObject) |
GetAnimationBaseValue(DependencyProperty) |
返回为依赖属性建立的任何基值,该基值适用于动画未处于活动状态的情况。 (继承自 DependencyObject) |
GetValue(DependencyProperty) |
从 DependencyObject 返回依赖属性的当前有效值。 (继承自 DependencyObject) |
ReadLocalValue(DependencyProperty) |
如果设置了本地值,则返回依赖属性的本地值。 (继承自 DependencyObject) |
RegisterPropertyChangedCallback(DependencyProperty, DependencyPropertyChangedCallback) |
注册通知函数,用于侦听此 DependencyObject 实例上对特定 DependencyProperty 的更改。 (继承自 DependencyObject) |
SetValue(DependencyProperty, Object) |
设置 DependencyObject 上依赖属性的本地值。 (继承自 DependencyObject) |
UnregisterPropertyChangedCallback(DependencyProperty, Int64) |
取消以前通过调用 RegisterPropertyChangedCallback 注册的更改通知。 (继承自 DependencyObject) |
事件
Completed |
在 Storyboard 对象完成播放时发生。 (继承自 Timeline) |