Procedura: Animare una matrice usando fotogrammi chiave
In questo esempio viene illustrato come animare la proprietà Matrix di un MatrixTransform usando fotogrammi chiave.
Esempio
Nell'esempio seguente viene utilizzata la classe MatrixAnimationUsingKeyFrames per animare la proprietà Matrix di un MatrixTransform. Nell'esempio viene utilizzato l'oggetto MatrixTransform per trasformare l'aspetto e la posizione di un Button.
Questa animazione usa la classe DiscreteMatrixKeyFrame per creare due fotogrammi chiave ed esegue le operazioni seguenti:
Aggiunge un'animazione alla prima Matrix durante i primi 0,2 secondi. L'esempio modifica le proprietà M11 e M12 del Matrix. Questa modifica fa sì che il pulsante si allunghi e si deformi. L'esempio modifica anche le proprietà OffsetX e OffsetY in modo che il pulsante cambi posizione.
Anima il secondo Matrix a 1,0 secondi. Il pulsante si sposta in un'altra posizione e nel frattempo non è più asimmetrico o allungato.
Ripete l'animazione per un periodo illimitato.
Nota
I fotogrammi chiave che derivano dall'oggetto DiscreteMatrixKeyFrame creano salti improvvisi tra i valori, vale a dire il movimento dell'animazione è a scatti.
<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>
Per l'esempio completo, vedere esempio di animazione basata su fotogrammi chiave.
Vedere anche
- Matrix
- MatrixTransform
- Panoramica delle animazioni Key-Frame
- Key-Frame Argomenti di istruzioni
.NET Desktop feedback