且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

WPF动画旋转(3轴同时旋转问题)

更新时间:2022-08-15 11:00:52

原文:WPF动画旋转(3轴同时旋转问题)

WPF的资料比较少,做起来不是很方便,之前一直有个XYZ3个轴同时旋转的问题,开始的时候以为通过

 this.theRotateX.Axis = new Vector3D(1, 0, 0);

this.theRotateY.Axis = new Vector3D(0, 1, 0);

this.theRotateZ.Axis = new Vector3D(0, 0, 1);

能够达到预期效果,但是程序中改变XAML只保留最后一次的值,也就是RotateZ的值,和预期相差甚远,下边是解决方法,通过声明3个Rotate来达到同时改变XYZ旋转动画:

                                           
                                        <RotateTransform3D>                                          
                                            
                                       <RotateTransform3D.Rotation>
                                                <AxisAngleRotation3D x:Name="theRotateX" Angle="180" Axis="1 0 0" />
                                            </RotateTransform3D.Rotation>
                                        </RotateTransform3D>
                                        <RotateTransform3D>
                                            <RotateTransform3D.Rotation>
                                                <AxisAngleRotation3D x:Name="theRotateY" Angle="180" Axis="0 1 0" />
                                            </RotateTransform3D.Rotation>
                                        </RotateTransform3D>
                                        <RotateTransform3D>
                                            <RotateTransform3D.Rotation>
                                                <AxisAngleRotation3D x:Name="theRotateZ" Angle="180" Axis="0 0 1" />
                                            </RotateTransform3D.Rotation>
                                        </RotateTransform3D>

也是通过这发现在程序中改变XAML只在一次程序循环同时改变一次,这样正常的编程方式会出现很多问题,不知道有没有其他的方式能够实现程序中顺序改变,而不是最后一次提交那种效果