方法 : アニメーションの継続時間を設定する

更新 : 2007 年 11 月

Timeline は時間のセグメントを表し、そのセグメントの長さはタイムラインの Duration によって決まります。Timeline は、期間の最後に到達すると、再生を停止します。Timeline に子タイムラインがある場合は、子も再生を停止します。アニメーションの場合は、Duration は、アニメーションが開始値から終了値まで移行するのに要する時間を指定します。

Duration には、特定の有限の時間、または特殊な値 Automatic または Forever を指定できます。アニメーションには、常に有限の長さを定義する必要があるため、アニメーションの継続時間は必ず時間値にする必要があります。それ以外の場合、アニメーションは、ターゲット値の間で遷移する方法を認識できません。StoryboardParallelTimeline などのコンテナ タイムライン (TimelineGroup オブジェクト) の既定の期間は Automatic であり、最後の子が再生を停止した時点で自動的に終了することを意味します。

次の例では、Rectangle の幅、高さ、および塗りつぶしの色をアニメーション化しています。期間はアニメーションとコンテナのタイムラインに設定されており、アニメーションの認識された速度の制御と、コンテナ タイムラインの期間での子タイムラインの期間のオーバーライドを含むアニメーション効果になっています。

使用例

<Page 
  xmlns="https://schemas.microsoft.com/winfx/2006/xaml/presentation" 
  xmlns:x="https://schemas.microsoft.com/winfx/2006/xaml">
  <StackPanel Margin="20">

    <Rectangle Width="100" Height="100" Name="myRectangle">
      <Rectangle.Fill>
        <SolidColorBrush x:Name="MyAnimatedBrush" Color="Black" />
      </Rectangle.Fill>
      <Rectangle.Triggers>

        <!-- Animates the rectangle fill to yellow and width to 300. -->
        <EventTrigger RoutedEvent="Rectangle.Loaded">
          <BeginStoryboard>

            <!-- By default, TimelineGroup objects like Storyboard and ParallelTimeline have 
            a Duration of "Automatic". A TimelineGroup's automatic duration encompasses its 
            last-ending child. In this example, there is only one child of the Storyboard, the
            ParallelTimeline, so when the ParallelTimeline ends, the Storyboard duration will
            automatically end. -->
            <Storyboard>

              <!-- This ParallelTimeline has overriden its default duration of "Automatic" with
              a finite duration of half a second. This will force this Timeline to end after half a
              second even though its child Timelines have a longer duration (2 and 4 seconds respectively). 
              This cuts off the animation prematurely and the rectangle's fill will not go all the way to 
              yellow nor will the rectangle width get all the way to 300. Again, the default duration of a
              ParallelTimeline is "Automatic" so if you remove the finite duration, the ParallelTimeline
              will wait for its child timelines to end before it ends. -->

              <!-- Note: To specify a finite time in XAML, use the syntax of "days:hours:seconds". As mentioned,
              this ParallelTimeline has a duration of half a second. -->
              <ParallelTimeline Duration="0:0:0.5">

                <!-- For Animation Timelines like DoubleAnimation, the duration is one factor that
                determines the rate at which an animation appears to progress. For example, the DoubleAnimation
                below that animates the rectangle height will complete in only one second while the animation
                that animates the width willwill complete in 2 seconds which is relatively fast compared to the DoubleAnimation
                which animates the rectangle width over 4 seconds. -->
                <DoubleAnimation
                  Storyboard.TargetName="myRectangle"
                  Storyboard.TargetProperty="Height"
                  To="300" Duration="0:0:1" />

                <DoubleAnimation
                  Storyboard.TargetName="myRectangle"
                  Storyboard.TargetProperty="Width"
                  To="300" Duration="0:0:4" />

                <ColorAnimation
                  Storyboard.TargetName="MyAnimatedBrush"
                  Storyboard.TargetProperty="Color"
                  To="Yellow" Duration="0:0:2" />

              </ParallelTimeline>
            </Storyboard>
          </BeginStoryboard>
        </EventTrigger>

      </Rectangle.Triggers>
    </Rectangle>
  </StackPanel>
</Page>

参照

概念

アニメーションの概要

参照

Duration