Matrix Struct
Definition
Important
Some information relates to prerelease product that may be substantially modified before it’s released. Microsoft makes no warranties, express or implied, with respect to the information provided here.
Represents a 3 × 3 affine transformation matrix used for transformations in twodimensional space.
public value class Matrix
/// [Windows.Foundation.Metadata.ContractVersion(Windows.Foundation.UniversalApiContract, 65536)]
struct Matrix
[Windows.Foundation.Metadata.ContractVersion(typeof(Windows.Foundation.UniversalApiContract), 65536)]
public struct Matrix
Public Structure Matrix
<Matrix .../>
 or 
<object property="m11,m12,m21,m22,offsetX,offsetY"/>
 or 
<object property="m11 m12 m21 m22 offsetX offsetY"/>
or
<object property="Identity"/>
 Inheritance

Matrix
 Attributes
Windows requirements
Device family 
Windows 10 (introduced in 10.0.10240.0)

API contract 
Windows.Foundation.UniversalApiContract (introduced in v1.0)

Examples
This example XAML defines a Matrix that provides data for a MatrixTransform applied to a rectangular shape. In this case, the matrix combines an offset (OffsetX and OffsetY) and a skew (M12). Note that this same effect could have been produced by combining a TranslateTransform and a SkewTransform. Whether to use a single Matrix or combinations of discrete transforms is a matter of coding style; the results are identical.
<Rectangle Width="100" Height="100" Fill="Red">
<Rectangle.RenderTransform>
<MatrixTransform Matrix="1,0,0,1,200,0">
</MatrixTransform>
</Rectangle.RenderTransform>
</Rectangle>
Remarks
A 3×3 matrix is used for transformations in a twodimensional xy plane. Affine transformation matrices can be multiplied to form any number of linear transformations, such as rotation and skew (shear), followed by translation. An affine transformation matrix has its final column equal to (0, 0, 1), so only the members in the first two columns need to be specified. Note that vectors are expressed as rowvectors, not column vectors.
A Matrix is stored using rowmajor order and has the following structure:
M11  M12  0 
M21  M22  0 
OffsetX  OffsetY  1 
The members in the last row, OffsetX and OffsetY, represent translation values.
In methods and properties, the transformation matrix is usually specified as a vector with only six members, as follows: (M11, M12, M21, M22, OffsetX, OffsetY)
Although you can use a Matrix structure directly to translate individual points, or with a MatrixTransform to transform objects, the Windows Runtime also provides a set of classes that can transform objects without working directly with matrices:
Properties of a Matrix can be animated (as one or more DoubleAnimation animations or DoubleAnimationUsingKeyFrames).
Matrix is the property value for the MatrixTransform.Matrix property. Related types can be used for transformation matrices in threedimensional space and then used for a projection. See Matrix3D and Matrix3DProjection.
Language projections and members of Matrix
If you are using a Microsoft .NET language (C# or Microsoft Visual Basic), or in Visual C++ component extensions (C++/CX) then Matrix has nondata members available, and its data members are exposed as readwrite properties, not fields.
If you are programming with C++ using the Windows Runtime Template Library (WRL), then only the data member fields exist as members of Matrix, and you cannot use the utility methods or properties listed in the members table. WRL code can access similar utility methods that exist on the MatrixHelper class.
Fields
M11 
The value of the first row and first column of this Matrix structure. 
M12 
The value of the first row and second column of this Matrix structure. 
M21 
The value of the second row and first column of this Matrix structure. 
M22 
The value of the second row and second column of this Matrix structure. 
OffsetX 
Gets or sets the value of the third row and first column of this Matrix structure. 
OffsetY 
Gets or sets the value of the third row and second column of this Matrix structure. 