Matrix

Matrix class

替换 GDI+ 矩阵。

public class Matrix

构造函数

姓名描述
Matrix()将 Matrix 类的新实例初始化为单位矩阵。
Matrix(Matrix)复制Matrix类.
Matrix(Rectangle, Point[])初始化Matrix类到由指定的矩形和点数组定义的几何变换。
Matrix(RectangleF, PointF[])初始化Matrix类到由指定的矩形和点数组定义的几何变换。
Matrix(float, float, float, float, float, float)初始化Matrix类.

特性

姓名描述
Elements { get; }获取表示此元素的浮点值数组Matrix .
M11 { get; }获取第一行第一列的矩阵元素。表示沿 X 轴的比例。
M12 { get; }获取第一行第二列的矩阵元素。表示沿 Y 轴的剪切。
M21 { get; }获取第二行第一列的矩阵元素。表示沿 X 轴的剪切。
M22 { get; }获取第二行第二列的矩阵元素。表示沿 Y 轴的比例。
M31 { get; }获取第三行第一列的矩阵元素。表示沿 X 轴的平移。
M32 { get; }获取第三行第一列的矩阵元素。表示沿 Y 轴的平移。

方法

姓名描述
override Equals(object)判断是否指定Object等于这个实例。
GetElements()获取矩阵元素的副本。
override GetHashCode()返回此实例的哈希码。
Multiply(Matrix)将此矩阵乘以在矩阵参数中指定的矩阵,使用(默认)前置顺序。
Multiply(Matrix, MatrixOrder)将此 Matrix 乘以 matrix 参数中指定的矩阵,并按照 order 参数中指定的顺序。
Reset()重置此矩阵以具有单位矩阵的元素。
Rotate(float)以默认(前置)顺序围绕该矩阵的原点(零 x 和 y 坐标)应用角度参数中指定的量的顺时针旋转。
Rotate(float, MatrixOrder)以指定的顺序围绕该矩阵的原点(零 x 和 y 坐标)应用角度参数中指定的量的顺时针旋转。
RotateAt(float, PointF)以默认(前置)顺序围绕指定点顺时针旋转此矩阵。
RotateAt(float, PointF, MatrixOrder)以指定顺序围绕指定点顺时针旋转此矩阵。
Scale(float, float)使用(默认)前置顺序将指定的比例向量(scaleX 和 scaleY)应用于此矩阵。
Scale(float, float, MatrixOrder)将指定的比例矢量(scaleX 和 scaleY)应用于此Matrix使用指定的顺序。
override ToString()返回一个String代表这个实例。
TransformPoints(PointF[])应用由此表示的几何变换Matrix到指定的点数组。
Translate(float, float)将指定的平移向量应用于此Matrix使用(默认)前置订单.
Translate(float, float, MatrixOrder)以指定的顺序将指定的平移向量应用于此矩阵。
static Equals(Matrix, Matrix)判断两个矩阵是否相等。

字段

姓名描述
const TypeFlip此标志位表示由此对象 定义的变换执行关于某个轴的镜像翻转,除了其他标志位指示的转换之外,这会将 通常右手坐标系更改为左手 系统。 右手坐标系是正 X 轴逆时针旋转以覆盖正 Y 轴 的方向,类似于当您盯着拇指时右手手指卷曲的方向 卷曲的方向。 左手坐标系是正 X 轴旋转的坐标系顺时针方向将正 Y 轴与左手手指卷曲的方向相似的 重叠。 没有数学方法来确定 原始翻转或镜像变换的角度,因为给定适当的调整旋转,翻转的所有角度 都是相同的。 注意:TypeFlip 是在 GENERAL_TRANSFORM 之后添加的在 public 流通中,标志位不能再方便地重新编号 而不在外部 代码中引入二进制不兼容。
const TypeGeneralRotation该标志位表示由该对象定义的变换 执行除其他标志位指示的 转换之外的任意角度的旋转。 旋转以相同的量改变向量的角度 而与向量的原始方向无关并且没有 改变向量的长度。 这个标志位与 互斥
const TypeGeneralScale通用比例将向量的长度乘以 x 和 y 方向上的不同 量,而不改变垂直向量之间的角度 。 此标志位与 TypeUniformScale 标志互斥。
const TypeGeneralTransform这个常量表示这个对象定义的变换 执行输入坐标的任意转换。 如果这个变换可以被上述任何一个常量分类, 类型将是常量 TypeIdentity 或 a 适当标志的组合此变换执行的各种坐标 转换的位。
const TypeIdentity恒等变换是一种输出坐标 总是与输入坐标相同的变换。 如果此变换不是恒等变换, 类型将是常数GENERAL_TRANSFORM或a 适当标志位的组合此变换执行的各种坐标 转换。
const TypeMaskRotation这个常数是任何旋转标志位的位掩码。
const TypeMaskScale这个常数是任何比例标志位的位掩码。
const TypeQuadrantRotation此标志位表示由此对象定义的变换 执行象限旋转 90 度的某个倍数 in 除了由其他标志位指示的转换。 旋转将向量的角度改变相同的量 而与原始方向无关向量和没有 改变向量的长度。 这个标志位与TypeGeneralRotation标志互斥。
const TypeTranslation平移在 x 和 y 中以恒定的量移动坐标,而不改变向量的长度或角度。
const TypeUniformScale统一比例将向量的长度乘以相同的数量 在x和y方向上不改变 向量之间的角度。 这个标志位与TypeGeneralScale标志互斥。

评论

大多数算法取自 Sun 的 AffineTransform.java. 内部使用的矩阵元素的 Java 名称。 Java 名称到 .net 的映射到描述: m00 M11 Scale X m10 M12 Shear Y m01 M21 Shear X m11 M22 Scale M3 Y_x00 m_x00平移 X m12 M32 平移 Y

也可以看看