Matrix 结构
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
表示用于二维空间中转换的 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 提供数据。 在这种情况下,矩阵将偏移量 (OffsetX 和 OffsetY 以及倾斜 (M12 组合在一起。 请注意,可以通过组合 TranslateTransform 和 SkewTransform 来生成相同的效果。 是使用单个矩阵还是离散转换的组合是编码样式的问题;结果相同。
<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) ,因此只需指定前两列中的成员。 请注意,向量表示为行向量,而不是列向量。
矩阵使用行主顺序存储,并具有以下结构:
M11 | M12 | 0 |
M21 | M22 | 0 |
OffsetX | OffsetY | 1 |
最后一行中的成员 OffsetX 和 OffsetY 表示转换值。
在方法和属性中,转换矩阵通常指定为只有六个成员的向量,如下所示: (M11、 M12、 M21、 M22、 OffsetX、 OffsetY)
尽管可以直接使用 Matrix 结构来转换各个点,或使用 MatrixTransform 转换对象,但Windows 运行时还提供了一组类,这些类可以转换对象,而无需直接使用矩阵:
矩阵的属性可以动画 (为一个或多个 DoubleAnimation 动画或 DoubleAnimationUsingKeyFrames) 。
Matrix 是 MatrixTransform.Matrix 属性的属性值。 相关类型可用于三维空间中的转换矩阵,然后用于投影。 请参阅 Matrix3D 和 Matrix3DProjection。
语言投影和矩阵成员
如果使用 Microsoft .NET 语言 (C# 或 Microsoft Visual Basic) ,或在 Visual C++ 组件扩展 (C++/CX) 则 Matrix 具有可用的非数据成员,并且其数据成员公开为读写属性,而不是字段。
如果使用 Windows 运行时 模板库 (WRL) 使用 C++ 进行编程,则只有数据成员字段作为 Matrix 的成员存在,并且不能使用成员表中列出的实用工具方法或属性。 WRL 代码可以访问 MatrixHelper 类中存在的类似实用工具方法。
字段
M11 |
此矩阵结构的第一行和第一列的值。 |
M12 |
此矩阵结构的第一行和第二列的值。 |
M21 |
此矩阵结构的第二行和第一列的值。 |
M22 |
此矩阵结构的第二行和第二列的值。 |
OffsetX |
获取或设置此矩阵结构的第三行和第一列的值。 |
OffsetY |
获取或设置此矩阵结构的第三行和第二列的值。 |