Jak na to: Animace matice pomocí klíčových snímků
Tento příklad ukazuje, jak animovat Matrix vlastnost MatrixTransform pomocí klíčových snímků.
Příklad
Následující příklad používá třídu MatrixAnimationUsingKeyFrames k animaci vlastnosti Matrix z MatrixTransform. Příklad používá objekt MatrixTransform k transformaci vzhledu a umístění Button.
Tato animace používá třídu DiscreteMatrixKeyFrame k vytvoření dvou klíčových snímků a s nimi provede následující:
Animuje první Matrix během prvních 0,2 sekund. Příklad změní u Matrixvlastnosti M11 a M12. Tato změna způsobí, že se tlačítko roztáhne a deformuje. Příklad také změní vlastnosti OffsetX a OffsetY tak, aby se tlačítko přesunulo na jinou pozici.
Animuje druhý Matrix v čase 1,0 sekundy. Tlačítko se přesune na jinou pozici a už není zkosené nebo roztažené.
Zopakuje animaci po neomezenou dobu.
Poznámka
Klíčové snímky odvozené z objektu DiscreteMatrixKeyFrame způsobují náhlé skoky mezi hodnotami, což znamená, že pohyb animace je trhaný.
<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>
Pro kompletní příklad se podívejte na ukázku animace klíčových snímků .
Viz také
- Matrix
- MatrixTransform
- Key-Frame Přehled animací
- Key-Frame Témata s návody
.NET Desktop feedback