使用故事板为3D对象设置动画

时间:2013-03-20 00:18:06

标签: c# wpf animation

我正在使用C#中的3D对象,我试图让一个立方体动画化以在其自己的轴上旋转。此外,我需要能够控制旋转的方向并能够暂停动画。

我目前的方法是创建一个Storyboard并尝试访问在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.

2 个答案:

答案 0 :(得分:0)

当你说无济于事时,你现在处于哪种情况? 如果您目前在程序开始时遇到异常,我的猜测是尝试在xaml中定义Storyboard,或者在c#中定义您的多维数据集,并调用{{1}的RegisterName方法}}。 如果没有,请详细说明。

答案 1 :(得分:0)

我会在XAML中声明StoryBoard(因为你可以在Blend中轻​​松创建你想要的东西,或者在XAMl中创建它,然后在C#中调整它,节省必须在代码中创建所有它(这是噩梦))。

这是XAML中的一个立方体

我在这里做了一个旋转的三维立方体:http://www.codeproject.com/Articles/30078/WPF-A-3D-screensaver-written-in-WPF