次の方法で共有


方法: FrameworkElement のサイズをアニメーション化する

FrameworkElementのサイズをアニメーション化するには、その Width プロパティと Height プロパティをアニメーション化するか、アニメーション化された ScaleTransformを使用します。

次の例では、これら 2 つの方法を使用して 2 つのボタンのサイズをアニメーション化します。 1 つのボタンは Width プロパティをアニメーション化することでサイズを変更し、もう 1 つのボタンは ScaleTransform プロパティに適用された RenderTransform をアニメーション化することによってサイズを変更します。 各ボタンには、いくつかのテキストが含まれています。 最初は、テキストは両方のボタンで同じように表示されますが、ボタンのサイズが変更されると、2 番目のボタンのテキストが歪んで表示されます。

<!-- AnimatingSizeExample.xaml
     This example shows two ways of animating the size
     of a framework element. -->
<Page 
  xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
  xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
  x:Class="Microsoft.Samples.Animation.AnimatingSizeExample" 
  WindowTitle="Animating Size Example">    
  <Canvas Width="650" Height="400">
    
    <Button Name="AnimatedWidthButton"
      Canvas.Left="20" Canvas.Top="20"      
      Width="200" Height="150"
      BorderBrush="Red" BorderThickness="5">
        Click Me
      <Button.Triggers>
      
        <!-- Animate the button's Width property. -->
        <EventTrigger RoutedEvent="Button.Loaded">
          <BeginStoryboard>
            <Storyboard>
              <DoubleAnimation
                Storyboard.TargetName="AnimatedWidthButton"
                Storyboard.TargetProperty="(Button.Width)"
                To="500" Duration="0:0:10" AutoReverse="True" 
                RepeatBehavior="Forever" />
            </Storyboard>
          </BeginStoryboard>
        </EventTrigger>
      </Button.Triggers>
    </Button>
    
    <Button 
      Canvas.Left="20" Canvas.Top="200"
      Width="200" Height="150"
      BorderBrush="Black" BorderThickness="3"> 
        Click Me
      <Button.RenderTransform>
         <ScaleTransform x:Name="MyAnimatedScaleTransform" 
          ScaleX="1" ScaleY="1"  />
      </Button.RenderTransform>
      <Button.Triggers>
      
        <!-- Animate the ScaleX property of a ScaleTransform
             applied to the button. -->
        <EventTrigger RoutedEvent="Button.Loaded">
          <BeginStoryboard>
            <Storyboard>
              <DoubleAnimation
                Storyboard.TargetName="MyAnimatedScaleTransform"
                Storyboard.TargetProperty="(ScaleTransform.ScaleX)"
                To="3.0" Duration="0:0:10" AutoReverse="True"
                RepeatBehavior="Forever" />
            </Storyboard>
          </BeginStoryboard>
        </EventTrigger>
      </Button.Triggers>      
    </Button>
  </Canvas> 
</Page>

要素を変換すると、要素全体とその内容が変換されます。 最初のボタンのように要素のサイズを直接変更する場合、要素のサイズと位置が親要素のサイズに依存しない限り、要素の内容はサイズ変更されません。

アニメーション化された変換を RenderTransform プロパティに適用して要素のサイズをアニメーション化すると、Width プロパティはレイアウト パスをトリガーしないため、HeightRenderTransform を直接アニメーション化するよりもパフォーマンスが向上します。

プロパティのアニメーション化の詳細については、「アニメーションの概要」を参照してください。 変換の詳細については、「変換の概要」を参照してください。