将PlaneProjection转换为MatrixTransform

时间:2011-02-22 08:58:25

标签: silverlight

我有一个平面投影如下:

<Rectangle Fill="Red" Margin="50">
    <Rectangle.Projection>
        <PlaneProjection RotationX="-40"/>
    </Rectangle.Projection>
</Rectangle>

出于各种原因,我想使用MatrixTransform。有谁知道等效的MatrixTransform会是什么?

1 个答案:

答案 0 :(得分:6)

PlaneProjection是非线性转换,而MatrixTransform是:

http://www.charlespetzold.com/blog/2009/01/Non-Affine-Transforms-in-Silverlight.html

无法用线性变换表达完全相同的投影。

如果要变换图像或非交互元素,可以将其拆分为两个三角形,以在不使用投影的情况下获得良好的“3d”效果。例如,这个方法使用这种方法(SL 2.0代码):

http://www.codeproject.com/KB/silverlight/CubeProject.aspx

最后,如果您只需要转换矩阵,则可以从ProjectionMatrix属性访问它。

var matrix = (myElement.Projection as PlaneProjection).ProjectionMatrix;
var matrixProjection = new Matrix3DProjection { ProjectionMatrix = matrix };

这也是您如何使用它来创建Matrix3DProjection