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