다음을 통해 공유


방법: FrameworkElement의 크기에 애니메이션 효과 적용

FrameworkElement의 크기에 애니메이션 효과를 주려면 해당 Width 속성과 Height 속성에 애니메이션 효과를 주거나 애니메이션 효과가 적용된 ScaleTransform을 사용하면 됩니다.

다음 예제에서는 이러한 두 가지 방법을 사용하여 두 단추의 크기에 애니메이션 효과를 줍니다. 단추 하나는 Width 속성에 애니메이션 효과를 적용하면 크기가 조정되며 또 다른 단추는 RenderTransform 속성에 적용된 ScaleTransform에 애니메이션 효과를 적용하면 크기가 조정됩니다. 각 단추에는 일부 텍스트가 포함되어 있습니다. 처음에는 텍스트가 두 단추에서 모두 동일하게 표시되지만 단추 크기가 조정되면 두 번째 단추의 텍스트가 왜곡됩니다.

예시

<!-- 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 속성에 애니메이션 변환을 적용하여 한 요소의 크기에 애니메이션 효과를 적용하면 RenderTransform 속성이 레이아웃 패스를 트리거하지 않기 때문에 WidthHeight에 애니메이션 효과를 직접 적용하는 것보다 더 나은 성능이 제공됩니다.

속성 애니메이션 효과에 관한 자세한 내용은 애니메이션 개요를 참조하세요. 변환에 관한 자세한 내용은 변환 개요를 참조하세요.