キャンバスにある画像の左プロパティをアニメーション化しようとしています。Animate Canvas.Leftプロパティ
私がやっている:
image.SetValue(Canvas.LeftProperty, destX[i]);
これが働いています。 しかし、ときに私がやっている:
private void Animate(Image image, double val1, double val2, double miliseconds)
{
DoubleAnimation myDoubleAnimation = new DoubleAnimation { From = val1, To = val2, Duration = new Duration(TimeSpan.FromMilliseconds(miliseconds)) };
TranslateTransform ts = new TranslateTransform();
image.RenderTransform = ts;
Storyboard.SetTarget(myDoubleAnimation, ts);
Storyboard.SetTargetProperty(myDoubleAnimation, new PropertyPath(TranslateTransform.XProperty));
Storyboard myMovementStoryboard = new Storyboard();
myMovementStoryboard.Children.Add(myDoubleAnimation);
myMovementStoryboard.Begin();
myMovementStoryboard.Completed += (s, e) =>
{
image.SetValue(Canvas.LeftProperty, val2);
};
}
と
Animate(image, lastValue, destX[i], 500);
を私のアニメーション機能に間違っている可能性が何
を働いていないのですか? アニメーションが悪い場合でも、完了したイベントは良い値をcanvas.leftpropertyにリセットする必要があります。
私の場合、何かが間違っています。
どのようにアニメーション機能を実行しましたか?任意のヘルプ
実際、canvas.leftプロパティをアニメーションしたいと思います。 Storyboard.SetTargetProperty(myDoubleAnimation、新しいPropertyPath(Canvas.LeftProperty))を使用するべきではありません。 ? TranslateTransform.XPropertyを使用する代わりに? (もちろん、試した後、引数の例外があります) – Tim
Canvas.LeftPropertyをアニメーション化できるはずです。そのような場合にコードがどのように見えて、なぜ機能していないのかを理解する必要があります。この場合、ターゲットは「イメージ」になります。 –