Практическое руководство. Анимация матрицы с помощью ключевых кадров
В этом примере показано, как можно анимировать свойство Matrix объекта MatrixTransform с использованием ключевых кадров.
Пример
В следующем примере используется класс MatrixAnimationUsingKeyFrames для анимации свойства Matrix объекта MatrixTransform. В примере используется объект MatrixTransform для преобразования внешнего вида и положения объекта Button.
Эта анимация использует класс DiscreteMatrixKeyFrame для создания двух ключевых кадров и выполняет следующие действия с ними:
Анимирует первый Matrix в течение первых 0,2 секунды. В примере изменяются свойства M11 и M12 объекта Matrix. Это изменение приводит к тому, что кнопка растягивается и становится скошенной. В примере также изменяются свойства OffsetX и OffsetY, так что кнопка меняет положение.
Анимирует второй Matrix в 1,0 секунды. Кнопка перемещается в другую позицию, и она больше не скошена или не растянута.
Анимация повторяется бесконечно.
Примечание.
Ключевые кадры, производные от DiscreteMatrixKeyFrame, вызывают резкие внезапные изменения значений, т. е. анимация изменяется быстро и резко.
<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>
Описание полного примера см. в разделе Пример анимации по ключевым кадрам.
См. также
.NET Desktop feedback
Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделеОтправить и просмотреть отзыв по