Matrix 结构

定义

表示用于二维空间中转换的 3 × 3 个仿射转换矩阵。

public value class Matrix
/// [Windows.Foundation.Metadata.ContractVersion(Microsoft.UI.Xaml.WinUIContract, 65536)]
struct Matrix
[Windows.Foundation.Metadata.ContractVersion(typeof(Microsoft.UI.Xaml.WinUIContract), 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"/>
继承
Matrix
属性

示例

此示例 XAML 定义一个 Matrix,该矩阵为应用于矩形形状 的 MatrixTransform 提供数据。 在这种情况下,矩阵将偏移量 (OffsetXOffsetY 以及倾斜 (M12 组合在一起。 请注意,可以通过组合 TranslateTransformSkewTransform 来生成相同的效果。 是使用单个矩阵还是离散转换的组合是编码样式的问题;结果相同。

<Rectangle Width="100" Height="100" Fill="Red">
    <Rectangle.RenderTransform>
        <MatrixTransform Matrix="1,0,0,1,200,0">
        </MatrixTransform>
    </Rectangle.RenderTransform>
</Rectangle>

注解

3×3 矩阵用于二维 x-y 平面中的转换。 仿射转换矩阵可以相乘,以形成任意数量的线性转换,比如旋转和倾斜(扭曲)并随之转换。 仿射转换矩阵的最终列等于 (0,0,1) ,因此只需指定前两列中的成员。 请注意,向量表示为行向量,而不是列向量。

矩阵使用行主顺序存储,并具有以下结构:

M11M120
M21M220
OffsetXOffsetY1

最后一行中的成员 OffsetXOffsetY 表示转换值。

在方法和属性中,转换矩阵通常指定为只有六个成员的向量,如下所示: (M11M12M21M22OffsetXOffsetY)

尽管可以直接使用 Matrix 结构来转换各个点,或使用 MatrixTransform 转换对象,但Windows 运行时还提供了一组类,这些类可以转换对象,而无需直接使用矩阵:

矩阵的属性可以动画 (为一个或多个 DoubleAnimation 动画或 DoubleAnimationUsingKeyFrames) 。

Matrix 是 MatrixTransform.Matrix 属性的属性值。 相关类型可用于三维空间中的转换矩阵,然后用于投影。 请参阅 Matrix3DMatrix3DProjection

语言投影和矩阵成员

如果使用 Microsoft .NET 语言 (C# 或 Microsoft Visual Basic) ,或在 Visual C++ 组件扩展 (C++/CX) 则 Matrix 具有可用的非数据成员,并且其数据成员公开为读写属性,而不是字段。

如果使用 Windows 运行时 模板库 (WRL) 使用 C++ 进行编程,则只有数据成员字段作为 Matrix 的成员存在,并且不能使用成员表中列出的实用工具方法或属性。 WRL 代码可以访问 MatrixHelper 类中存在的类似实用工具方法。

字段

M11

此矩阵结构的第一行和第一列的值。

M12

此矩阵结构的第一行和第二列的值。

M21

此矩阵结构的第二行和第一列的值。

M22

此矩阵结构的第二行和第二列的值。

OffsetX

获取或设置此矩阵结构的第三行和第一列的值。

OffsetY

获取或设置此矩阵结构的第三行和第二列的值。

适用于