TranslateTransformを対象に、DoubleAnimation型のアニメーションを使用して、TranslateTransform.Xプロパティを ”-1 * Imageコントロールの幅” → 0 に変化させます。
-- MainWindow.xaml.cs --
Storyboard storyboard = new Storyboard();DoubleAnimation doubleAnimation = new DoubleAnimation();doubleAnimation.To = 0;doubleAnimation.From = -this.image1.ActualWidth;doubleAnimation.Duration = new Duration(TimeSpan.FromMilliseconds(600));Storyboard.SetTarget(doubleAnimation, _targetElement);Storyboard.SetTargetProperty(doubleAnimation, new PropertyPath( "(UIElement.RenderTransform).(TransformGroup.Children)[0].(TranslateTransform.X)"));storyboard.Children.Add(doubleAnimation);storyboard.Begin(); |
Image コントロールは Window に合わせてリサイズされるようにしているので、From の値にはActualWidth を指定します。
DoubleAnimation の対象となる依存関係プロパティは、Target に Image コントロールを指定しているため、上のような書き方になります。例えば、TranslateTransform に x:Name ディレクティブを追加して、それを Target に指定すれば、次のような書き方もできます。-- MainWindow.xaml --
<Image Name="image1" Stretch="Fill" Source="/Image/Sea.png" Margin="6"> <Image.RenderTransform> <TransformGroup> <TranslateTransform x:Name=”translateTransform1”/> </TransformGroup> </Image.RenderTransform></Image> |
-- MainWindow.xaml.cs --
Storyboard.SetTargetName(doubleAnimation, “translateTransform1);Storyboard.SetTargetProperty(doubleAnimation, new PropertyPath (TranslateTransform.XProperty)); |
要は対象から辿れるように正しく設定してください、ということですね。
詳しくは以下のページをご覧ください。