Nasıl yapılır: Anahtar Çerçeveler Kullanarak bir Matrise Animasyon Ekleme
Bu örnek, anahtar çerçeveler kullanarak bir Matrix özelliğinin MatrixTransform özelliğine animasyonu nasıl gösterebilirsiniz.
Örnek
Aşağıdaki örnek, bir MatrixAnimationUsingKeyFrames özelliğinin özelliğine animasyonu Matrix yapmak için sınıfını MatrixTransform kullanır. Örnek, görünümünü MatrixTransform ve konumunu dönüştürmek için nesnesini Button kullanır.
Bu animasyon iki DiscreteMatrixKeyFrame anahtar kare oluşturmak için sınıfını kullanır ve onlarla şunları yapar:
İlk Matrix 0,2 saniye boyunca ilke animasyonu sağlar. Örnek, ve M11M12 özelliklerini Matrix değiştirir. Bu değişiklik düğmenin esnetilmiş ve çarpıtılmış hale neden olur. Örnek ayrıca düğmenin OffsetX konumunu OffsetY değiştirmesi için ve özelliklerini de değiştirir.
MatrixSaniyeye 1,0 saniyede animasyon sağlar. Düğme artık çarpıtılmış veya esnetilmiş durumda değilken düğme başka bir konuma taşınır.
Animasyonu süresiz olarak yineler.
Not
Nesneden türeyen anahtar çerçeveler değerler arasında ani atlamalar oluşturur, başka bir şekilde animasyonun DiscreteMatrixKeyFrame hareketi çok hareketlidir.
<Page
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MatrixAnimationUsingPath Example">
<StackPanel Margin="20">
<Canvas HorizontalAlignment="Left" Width="340" Height="240" >
<!-- The Button that is animated. -->
<Button Margin="-30,0,0,0" MinWidth="100">
Click
<Button.RenderTransform>
<MatrixTransform x:Name="myMatrixTransform">
<MatrixTransform.Matrix >
<Matrix OffsetX="10" OffsetY="100"/>
</MatrixTransform.Matrix>
</MatrixTransform>
</Button.RenderTransform>
<Button.Triggers>
<EventTrigger RoutedEvent="Button.Loaded">
<BeginStoryboard>
<Storyboard>
<!-- Animates the button's MatrixTransform using MatrixAnimationUsingKeyFrames.
Animates to first Matrix in the first 0.2 seconds, to second Matrix in the next
second, and then starts over. Notice that the first KeyFrame stretches the button
and skews it using the M11 and M12 Matrix properties respectively. Also, animations are
using Discrete interpolation, so the MatrixTransform appears to "jump" from one value
to the next. -->
<MatrixAnimationUsingKeyFrames
Storyboard.TargetName="myMatrixTransform"
Storyboard.TargetProperty="Matrix"
Duration="0:0:3"
RepeatBehavior="Forever">
<DiscreteMatrixKeyFrame KeyTime="0:0:0.2">
<DiscreteMatrixKeyFrame.Value>
<Matrix OffsetX="100" OffsetY="200" M11="3" M12="1" />
</DiscreteMatrixKeyFrame.Value>
</DiscreteMatrixKeyFrame>
<DiscreteMatrixKeyFrame KeyTime="0:0:1">
<DiscreteMatrixKeyFrame.Value>
<Matrix OffsetX="300" OffsetY="100" M11="1" M12="0" />
</DiscreteMatrixKeyFrame.Value>
</DiscreteMatrixKeyFrame>
</MatrixAnimationUsingKeyFrames>
</Storyboard>
</BeginStoryboard>
</EventTrigger>
</Button.Triggers>
</Button>
</Canvas>
</StackPanel>
</Page>
Tam örnek için bkz. KeyFrame Animasyon Örneği.