次のコードを使用して回転できる単純な 3D キューブがあります。
void mui3D_MouseDown(object sender, System.Windows.Input.MouseButtonEventArgs e)
{
RotateTransform3D rotation = new RotateTransform3D(new AxisAngleRotation3D(new Vector3D(0, 1, 0), 0), mui.Model.Bounds.Location);
DoubleAnimation rotateAnim = new DoubleAnimation(0, 130d TimeSpan.FromMilliseconds(3000));
rotateAnim.Completed += new EventHandler(rotateAnim_Completed);
mui.Transform = rotation;
rotation.Rotation.BeginAnimation(AxisAngleRotation3D.AngleProperty, rotateAnim);
}
このコードを実行するたびに、アニメーションを使用して、Y 軸を中心に 0 ~ 130 度の角度で立方体を回転させます。
ただし、回転を「累積的に」適用して、前の回転が考慮され、立方体が前の回転を終了した角度から各回転を開始するようにしたいと思います。
例: アニメーション コンストラクターは、角度の "from" と "to" の値を必要とする代わりに、現在の回転角度に基づいてキューブをさらに 130 度回転させるだけです。
現在の角度を含むメンバー変数を簡単に使用してアニメーションに渡し、アニメーションが完了したときに更新することができます。しかし、これを達成するためにWPFを使用する標準的なアプローチがあるかどうか疑問に思っています。