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 プロパティはレイアウト パスをトリガーしないため、Height と RenderTransform を直接アニメーション化するよりもパフォーマンスが向上します。
プロパティのアニメーション化の詳細については、「アニメーションの概要」を参照してください。 変換の詳細については、「変換の概要」を参照してください。
.NET Desktop feedback