DoubleAnimation
にはStoryBoard
を使用できます。
下記のコードをご確認ください。 (厳密にパフォーマンスを必要としない)、この特定のケースのためのWPFで
<Window x:Class="ImageAnimation.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:ImageAnimation"
mc:Ignorable="d"
Title="MainWindow" Height="350" Width="525">
<Window.Resources>
<Storyboard x:Key="Storyboard" BeginTime="00:00:00.000" Duration="00:00:1.000">
<DoubleAnimation Storyboard.TargetName="RotateImage"
Storyboard.TargetProperty="(Canvas.Left)"
From="50" To="100" BeginTime="00:00:00.000" Duration="00:00:00.200" />
<DoubleAnimation Storyboard.TargetName="RotateImage"
Storyboard.TargetProperty="(Canvas.Top)"
From="100" To="90" BeginTime="00:00:00.000" Duration="00:00:00.100" />
<DoubleAnimation Storyboard.TargetName="RotateImage"
Storyboard.TargetProperty="(Canvas.Top)"
From="90" To="100" BeginTime="00:00:00.050" Duration="00:00:00.100" />
<DoubleAnimation Storyboard.TargetName="OpacityImage"
Storyboard.TargetProperty="(Canvas.Left)"
From="100" To="50" BeginTime="00:00:00.000" Duration="00:00:00.200" />
<DoubleAnimation Storyboard.TargetName="OpacityImage"
Storyboard.TargetProperty="(Canvas.Top)"
From="100" To="110" BeginTime="00:00:00.000" Duration="00:00:00.100" />
<DoubleAnimation Storyboard.TargetName="OpacityImage"
Storyboard.TargetProperty="(Canvas.Top)"
From="110" To="100" BeginTime="00:00:00.050" Duration="00:00:00.100" />
</Storyboard>
</Window.Resources>
<Grid>
<Grid.RowDefinitions>
<RowDefinition />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition />
<ColumnDefinition />
</Grid.ColumnDefinitions>
<Canvas Grid.Row="0" Grid.ColumnSpan="2">
<Image x:Name="RotateImage" Stretch="Uniform" Source="1.png" Height="50" Width="50" Canvas.Left="50" Canvas.Top="100">
</Image>
<Image x:Name="OpacityImage" Grid.Column="1" Stretch="Uniform" Source="2.png" Height="50" Width="50" Canvas.Left="100" Canvas.Top="100"/>
</Canvas>
<Button Grid.Row="1" Grid.ColumnSpan="2" Content="Start">
<Button.Triggers>
<EventTrigger RoutedEvent="Button.Click">
<BeginStoryboard Storyboard="{StaticResource Storyboard}" />
</EventTrigger>
</Button.Triggers>
</Button>
</Grid>
</Window>
、あなたは 'Geometry'からレンダリングされ、'キャンバス上で移動することができます 'PATH'(WPFにおける形状)を使用することができます'。それはあなたが始めるために必要なすべてです。もちろん、多くのオブジェクトをレンダリングしてパフォーマンスを向上させるには、 'Shape'を使用せず、' DrawingVisual'に直接描画するべきですが、 'Shape'を使ってオブジェクトを自分で管理するのは難しいと思います。ほとんどの場合。 –