WPF・Silverlight アニメーション
■ その1 画像を切り替えるアニメーション 1 2 【3】 4
TranslateTransformを対象に、DoubleAnimation型のアニメーションを使用して、TranslateTransform.Xプロパティを
”-1 * Imageコントロールの幅” → 0 に変化させます。
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
に指定すれば、次のような書き方もできます。
<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)); |
要は対象から辿れるように正しく設定してください、ということですね。
詳しくは以下のページをご覧ください。
http://msdn.microsoft.com/ja-jp/library/cc645024(v=VS.95).aspx#databinding_sa