此示例演示如何将动画输出值添加到动画起始值。
示例:
IsAdditive 属性指定是否希望动画的输出值添加到动画属性的起始值(基值)。 可以将 IsAdditive 属性与最基本的动画和大多数关键帧动画一起使用。 有关详细信息,请参阅 动画概述 和 Key-Frame 动画概述。
下面的示例演示了将 DoubleAnimation.IsAdditive 属性与 DoubleAnimation 和 DoubleAnimationUsingKeyFrames.IsAdditive 属性与 DoubleAnimationUsingKeyFrames结合使用的效果。
<Page xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<StackPanel Margin="20" >
<!-- This rectangle is animated with DoubleAnimation and IsAdditive set to "True". -->
<Rectangle Name="withIsAdditive"
Width="100" Height="20" Margin="12,0,0,5" Fill="#AA3333FF" HorizontalAlignment="Left" />
<!-- This rectangle is animated with DoubleAnimation and IsAdditive set to "False". -->
<Rectangle Name="withoutIsAdditive"
Width="100" Height="20" Margin="12,0,0,5" Fill="#AA3333FF" HorizontalAlignment="Left" />
<!-- This rectangle is animated with DoubleAnimationUsingKeyFrames and IsAdditive set to "True". -->
<Rectangle Name="withIsAdditiveUsingKeyFrames"
Width="100" Height="20" Margin="12,0,0,5" Fill="#AA3333FF" HorizontalAlignment="Left" />
<!-- This rectangle is animated with DoubleAnimationUsingKeyFrames and IsAdditive set to "False". -->
<Rectangle Name="withoutIsAdditiveUsingKeyFrames"
Width="100" Height="20" Margin="12,0,0,5" Fill="#AA3333FF" HorizontalAlignment="Left" />
<!-- Create a button to restart the animations. -->
<Button Margin="0,30,0,0" HorizontalAlignment="Left">
Restart Animations
<Button.Triggers>
<EventTrigger RoutedEvent="Button.Click">
<BeginStoryboard>
<Storyboard>
<!-- DoubleAnimation with IsAdditive set to "True". Because IsAdditive is set to "True" the
actual starting value of the animation is equal to the sum of the default starting
value of 100 (From="100)and the animation output value of 100 (From="100" To="200") Therefore
the animation begins at 200 pixels. Notice that each time the button is clicked and the
animation is initiated, the animation starting value builds upon the preceeding ending value. -->
<DoubleAnimation
Storyboard.TargetName="withIsAdditive"
Storyboard.TargetProperty="Width"
Duration="0:0:3" From="100" To="200" IsAdditive="True" />
<!-- DoubleAnimation with IsAdditive set to "False". The starting value is the default starting
value of 100 pixels and subsequent animations do not build on earlier ones. -->
<DoubleAnimation
Storyboard.TargetName="withoutIsAdditive"
Storyboard.TargetProperty="Width"
Duration="0:0:3" From="100" To="200" IsAdditive="False" />
<!-- DoubleAnimationUsingKeyFrames with IsAdditive set to "True". Similar to the DoubleAnimation
above, this animation adds its output value to its starting value. Note that the output value
is the total output value from all the key frames for a total output of 100 pixels. -->
<DoubleAnimationUsingKeyFrames
Storyboard.TargetName="withIsAdditiveUsingKeyFrames"
Storyboard.TargetProperty="Width"
IsAdditive="True" >
<DoubleAnimationUsingKeyFrames.KeyFrames>
<LinearDoubleKeyFrame Value="100" KeyTime="0:0:0" />
<LinearDoubleKeyFrame Value="130" KeyTime="0:0:1" />
<SplineDoubleKeyFrame KeySpline="0.6,0.0 0.9,0.00" Value="200" KeyTime="0:0:3" />
</DoubleAnimationUsingKeyFrames.KeyFrames>
</DoubleAnimationUsingKeyFrames>
<!-- DoubleAnimationUsingKeyFrames with IsAdditive set to "False". The starting value is the
default starting value of 100 pixels and subsequent animations do not build on earlier ones. -->
<DoubleAnimationUsingKeyFrames
Storyboard.TargetName="withoutIsAdditiveUsingKeyFrames"
Storyboard.TargetProperty="Width"
IsAdditive="False" >
<DoubleAnimationUsingKeyFrames.KeyFrames>
<LinearDoubleKeyFrame Value="100" KeyTime="0:0:0" />
<LinearDoubleKeyFrame Value="130" KeyTime="0:0:1" />
<SplineDoubleKeyFrame KeySpline="0.6,0.0 0.9,0.00" Value="200" KeyTime="0:0:3" />
</DoubleAnimationUsingKeyFrames.KeyFrames>
</DoubleAnimationUsingKeyFrames>
</Storyboard>
</BeginStoryboard>
</EventTrigger>
</Button.Triggers>
</Button>
</StackPanel>
</Page>