Jak animować Matrix z wykorzystaniem klatek kluczowych
W tym przykładzie pokazano, jak animować Matrix właściwość obiektu MatrixTransform przy użyciu klatek kluczowych.
Przykład
W poniższym przykładzie użyto MatrixAnimationUsingKeyFrames klasy do animowania Matrix właściwości klasy MatrixTransform. W przykładzie użyto MatrixTransform obiektu , aby przekształcić wygląd i położenie obiektu Button.
Ta animacja używa klasy do utworzenia DiscreteMatrixKeyFrame dwóch klatek kluczowych i wykonuje następujące czynności:
Animuje pierwszy Matrix w ciągu pierwszych 0,2 sekund. Przykład zmienia M11 właściwości i M12 obiektu Matrix. Ta zmiana powoduje rozciąganie przycisku i staje się niesymetryczne. Przykład zmienia OffsetX również właściwości i OffsetY tak, aby przycisk zmienił położenie.
Animuje sekundę Matrix o 1,0 sekundy. Przycisk przechodzi do innej pozycji, gdy przycisk nie jest już niesymetryczny lub rozciągnięty.
Powtarza animację w nieskończoność.
Uwaga
Klatki kluczowe pochodzące z DiscreteMatrixKeyFrame obiektu tworzą nagłe skoki między wartościami, czyli ruch animacji jest szarpany.
<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>
Pełny przykład można znaleźć w temacie KeyFrame Animation Sample (Przykład animacji klatek kluczowych).
Zobacz też
.NET Desktop feedback
Opinia
https://aka.ms/ContentUserFeedback.
Dostępne już wkrótce: W 2024 r. będziemy stopniowo wycofywać zgłoszenia z serwisu GitHub jako mechanizm przesyłania opinii na temat zawartości i zastępować go nowym systemem opinii. Aby uzyskać więcej informacji, sprawdź:Prześlij i wyświetl opinię dla