Canvas のTranslateY をストーリーボードでアニメーションする際の注意です。
<Canvas Name=”canvas” >
<Canvas.RenderTransform>
<CompositeTransform>
<CompositeTransform.TranslateY>100
</CompositeTransform.TranslateY>
</CompositeTransform>
</Canvas.RenderTransform>
・・・とRenderTransform を定義しておくか、コードで
canvas.RenderTransform = new CompositeTransform();
のように、RenderTransform を追加しておかないと、ターゲットが存在しないため、
ArgumentException “パラメータが正しくありません” というわけのわからない例外になります。
それから、SetTarget で、canvas を指定しただけだと、ターゲットの指定が不十分でアニメーションが動きません。次のように、canvas.RenderTransform まで指定する必要があります。
Storyboard.SetTarget(daukf1, canvas.RenderTransform);
Storyboard sb1 = new Storyboard();
canvas.RenderTransform = new CompositeTransform();
DoubleAnimationUsingKeyFrames daukf1 = new DoubleAnimationUsingKeyFrames();
LinearDoubleKeyFrame ldkf1 = new LinearDoubleKeyFrame();
ldkf1.KeyTime = KeyTime.FromTimeSpan(new TimeSpan(0, 0, 0));
ldkf1.Value = 0;
LinearDoubleKeyFrame ldkf2 = new LinearDoubleKeyFrame();
ldkf2.KeyTime = KeyTime.FromTimeSpan(new TimeSpan(0, 0, 10));
ldkf2.Value = -1300;
daukf1.KeyFrames.Add(ldkf1);
daukf1.KeyFrames.Add(ldkf2);
Storyboard.SetTarget(daukf1, canvas.RenderTransform);
Storyboard.SetTargetProperty(daukf1, new PropertyPath(CompositeTransform.TranslateYProperty));
sb1.Children.Add(daukf1);
sb1.RepeatBehavior = RepeatBehavior.Forever;
sb1.Begin();
コメントを残す