Anvisningar: Animera en matris med hjälp av nyckelramar
Det här exemplet visar hur du animerar egenskapen Matrix för en MatrixTransform med hjälp av nyckelramar.
Exempel
I följande exempel används klassen MatrixAnimationUsingKeyFrames för att animera egenskapen Matrix för en MatrixTransform. I exemplet används objektet MatrixTransform för att transformera utseendet och positionen för en Button.
Den här animeringen använder klassen DiscreteMatrixKeyFrame för att skapa två nyckelramar och gör följande med dem:
Animerar Matrix under de första 0,2 sekunderna. I exemplet ändras egenskaperna M11 och M12 för Matrix. Den här ändringen gör att knappen sträcks ut och blir skev. Exemplet ändrar även egenskaperna OffsetX och OffsetY så att knappen ändrar position.
Animerar den andra Matrix på 1,0 sekunder. Knappen flyttas till en annan position medan knappen inte längre är skev eller utsträckt.
Upprepar animeringen på obestämd tid.
Note
Nyckelramar som härleds från DiscreteMatrixKeyFrame-objektet skapar plötsliga hopp mellan värden, det vill ex. animeringens rörelse är ryckig.
<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>
Det fullständiga exemplet finns i Exempel på keyframe-animering.
Se även
.NET Desktop feedback