Voici une version XAML fonctionnelle de votre question, suivie d'une version identique en C#. Ce n'est peut-être pas exactement ce que vous recherchiez, mais cela devrait l'illustrer.
Version XAML :
<Window x:Class="WpfApplication1.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="350" Width="525">
<Window.Resources>
<Storyboard x:Key="Storyboard" BeginTime="00:00:00.000" Duration="00:00:10.000">
<DoubleAnimation Storyboard.TargetName="RotateImage"
Storyboard.TargetProperty="(UIElement.RenderTransform).(RotateTransform.Angle)"
From="0" To="360" BeginTime="00:00:05.000" Duration="00:00:05.000" />
<DoubleAnimation Storyboard.TargetName="OpacityImage"
Storyboard.TargetProperty="Opacity"
From="1" To="0" Duration="00:00:10.000" />
</Storyboard>
</Window.Resources>
<Grid>
<Grid.RowDefinitions>
<RowDefinition />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition />
<ColumnDefinition />
</Grid.ColumnDefinitions>
<Image x:Name="RotateImage" Stretch="Uniform" Source="Chrysanthemum.jpg">
<Image.RenderTransform>
<RotateTransform Angle="0" />
</Image.RenderTransform>
</Image>
<Image x:Name="OpacityImage" Grid.Column="1" Stretch="Uniform" Source="Desert.jpg" />
<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>
Et la version C# :
public MainWindow()
{
InitializeComponent();
Image rotateImage = new Image()
{
Stretch = Stretch.Uniform,
Source = new BitmapImage(new Uri("pack://application:,,,/Chrysanthemum.jpg")),
RenderTransform = new RotateTransform()
};
Image opacityImage = new Image()
{
Stretch = Stretch.Uniform,
Source = new BitmapImage(new Uri("pack://application:,,,/Desert.jpg"))
};
LayoutRoot.Children.Add(rotateImage);
LayoutRoot.Children.Add(opacityImage);
Grid.SetColumn(opacityImage, 1);
Storyboard storyboard = new Storyboard();
storyboard.Duration = new Duration(TimeSpan.FromSeconds(10.0));
DoubleAnimation rotateAnimation = new DoubleAnimation()
{
From = 0,
To = 360,
Duration = storyboard.Duration
};
DoubleAnimation opacityAnimation = new DoubleAnimation()
{
From = 1.0,
To = 0.0,
BeginTime = TimeSpan.FromSeconds(5.0),
Duration = new Duration(TimeSpan.FromSeconds(5.0))
};
Storyboard.SetTarget(rotateAnimation, rotateImage);
Storyboard.SetTargetProperty(rotateAnimation, new PropertyPath("(UIElement.RenderTransform).(RotateTransform.Angle)"));
Storyboard.SetTarget(opacityAnimation, opacityImage);
Storyboard.SetTargetProperty(opacityAnimation, new PropertyPath("Opacity"));
storyboard.Children.Add(rotateAnimation);
storyboard.Children.Add(opacityAnimation);
Resources.Add("Storyboard", storyboard);
Button button = new Button()
{
Content = "Begin"
};
button.Click += button_Click;
Grid.SetRow(button, 1);
Grid.SetColumnSpan(button, 2);
LayoutRoot.Children.Add(button);
}
void button_Click(object sender, RoutedEventArgs e)
{
((Storyboard)Resources["Storyboard"]).Begin();
}