我有一个平面投影如下:
<Rectangle Fill="Red" Margin="50">
<Rectangle.Projection>
<PlaneProjection RotationX="-40"/>
</Rectangle.Projection>
</Rectangle>
出于各种原因,我想使用MatrixTransform。有谁知道等效的MatrixTransform会是什么?
答案 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