1

C#で3Dオブジェクトを操作していますが、立方体をアニメーション化して独自の軸を中心に回転させようとして立ち往生しています。さらに、回転の方向を制御し、アニメーションを一時停止できる必要があります。

私の現在のアプローチは、ストーリーボードを作成し、XAMLで定義されている「キューブ」オブジェクトにアクセスしようとすることですが、役に立ちません。誰かが私が間違っていることを指摘できますか?

    this.RegisterName("cube", cube);    
    myStoryboard = new Storyboard(); 
    RotateTransform3D myRotateTransform = new RotateTransform3D(new AxisAngleRotation3D(new Vector3D(0, 1, 0), 0));
    Rotation3DAnimation myRotationAnimation =  new Rotation3DAnimation(Rotation,AnimationSpeed);
    myRotationAnimation.RepeatBehavior = RepeatBehavior.Forever;
    myRotateTransform.Rotation.BeginAnimation(AxisAngleRotation3D.AxisProperty, myVectorAnimation);
    myStoryboard.Children.Add(myRotationAnimation);
    Storyboard.SetTargetName(myRotationAnimation, "cube");
    Storyboard.SetTarget(myRotationAnimation,cube.Transform);
    myStoryboard.Begin();

このコードがもたらすエラーは次のとおりです。

Cannot animate '(0)' on an immutable object instance.
4

2 に答える 2

0

XAML で StoryBoard を宣言します (Blend で必要なものを非常に簡単に作成するか、XAMl ですべて作成してから C# で調整できるため、すべてをコードで作成する必要がなくなります (これは悪夢です))。 )。

これは XAML のキューブです

ここで回転する 3D キューブを作成します: http://www.codeproject.com/Articles/30078/WPF-A-3D-screensaver-written-in-WPF

于 2013-03-20T15:03:49.727 に答える
0

だめだと言うとき、あなたは今、どのような状況にいますか?現在、プログラムの開始時に例外が発生している場合はStoryboard、xaml で定義するか、逆に c# でキューブを定義してRegisterNameFrameworkElement. そうでない場合は、詳しく説明してください。

于 2013-03-20T12:55:25.427 に答える