WPF 3D - 应用转换,更改基础对象值

时间:2009-08-17 20:16:35

标签: c# wpf 3d

我有一种方法可以转换多个柱面。如果我再次运行该方法,它会将气缸从原始位置而不是新位置变换。

是否有“应用”转换,以便更改柱面的基础值,以便我可以从新值重新转换?

有人可以帮忙吗?

干杯,

安迪

    void TransformCylinders(double angle)
    {

        var rotateTransform3D = new RotateTransform3D { CenterX = 0, CenterY = 0, CenterZ = 0 };
        var axisAngleRotation3D = new AxisAngleRotation3D { Axis = new Vector3D(1, 1, 1), Angle = angle };
        rotateTransform3D.Rotation = axisAngleRotation3D;
        var myTransform3DGroup = new Transform3DGroup();
        myTransform3DGroup.Children.Add(rotateTransform3D);
        _cylinders.ForEach(x => x.Transform = myTransform3DGroup);

    }

1 个答案:

答案 0 :(得分:5)

每次调用方法时,您都会重新设置Transform3DGroup

var myTransform3DGroup = new Transform3DGroup();

变换本质上是一堆矩阵,它们相乘。每次创建新组时,您都要清除该堆栈。您需要将连续变换添加到现有组,而不是重新制作它。