Matrix

Inheritance: java.lang.Object

public class Matrix

替代 GDI+ 矩阵。


大多数算法取自 Sun 的 AffineTransform.java。内部使用 Java 的矩阵元素名称。Java 名称到 .net 名称的映射及说明:m00 M11 缩放 X m10 M12 剪切 Y m01 M21 剪切 X m11 M22 缩放 Y m02 M31 平移 X m12 M32 平移 Y

构造函数

构造函数描述
Matrix()将 Matrix 类初始化为单位矩阵的新实例。
Matrix(float m11, float m12, float m21, float m22, float m31, float m32)Matrix 类初始化为新实例。
Matrix(RectangleF rect, PointF[] plgpts)Matrix 类初始化为由指定矩形和点数组定义的几何变换的新实例。
Matrix(Rectangle rect, Point[] plgpts)Matrix 类初始化为由指定矩形和点数组定义的几何变换的新实例。
Matrix(Matrix origin)创建 Matrix 类的副本。

字段

字段描述
TYPE_IDENTITY单位变换是指输出坐标始终与输入坐标相同的变换。
TYPE_TRANSLATION平移在 x 和 y 方向上以恒定量移动坐标,而不改变向量的长度或角度。
TYPE_UNIFORM_SCALE均匀缩放在 x 和 y 方向上以相同的比例乘以向量的长度,而不改变向量之间的角度。
TYPE_GENERAL_SCALE一般缩放在 x 和 y 方向上以不同的比例乘以向量的长度,而不改变垂直向量之间的角度。
TYPE_MASK_SCALE此常量是用于任意缩放标志位的位掩码。
TYPE_FLIP此标志位表示此对象定义的变换在某轴上执行镜像翻转,除了其他标志位指示的转换外,还将通常的右手坐标系转换为左手坐标系。
TYPE_QUADRANT_ROTATION此标志位表示此对象定义的变换在执行某个 90 度倍数的象限旋转,除了其他标志位指示的转换外。
TYPE_GENERAL_ROTATION此标志位表示此对象定义的变换在执行任意角度的旋转,除了其他标志位指示的转换外。
TYPE_MASK_ROTATION此常量是用于任意旋转标志位的位掩码。
TYPE_GENERAL_TRANSFORM此常量表示此对象定义的变换对输入坐标执行任意转换。

方法

方法描述
isEquals(Matrix a, Matrix b)确定两个矩阵是否相等。
getM11()获取第一行第一列的矩阵元素。
getM12()获取第一行第二列的矩阵元素。
getM21()获取第二行第一列的矩阵元素。
getM22()获取第二行第二列的矩阵元素。
getM31()获取第三行第一列的矩阵元素。
getM32()获取第三行第一列的矩阵元素。
toString()返回表示此实例的字符串。
getElements()获取矩阵元素的副本。
transformPoints(PointF[] points)对指定的点数组应用此 Matrix 所表示的几何变换。
scale(float scaleX, float scaleY, int order)使用指定的顺序将指定的缩放向量(scaleX 和 scaleY)应用于此 Matrix
scale(float sx, float sy)使用(默认)Prepend 顺序将指定的缩放向量(scaleX 和 scaleY)应用于此 Matrix。
translate(float offsetX, float offsetY, int order)在指定顺序下,将指定的平移向量应用于此 Matrix。
translate(float tx, float ty)在(默认)Prepend 顺序下,将指定的平移向量应用于此 Matrix
multiply(Matrix tTx, int order)将此 Matrix 与 matrix 参数中指定的矩阵相乘,并按 order 参数中指定的顺序进行。
multiply(Matrix tTx)在(默认)Prepend 顺序下,将此 Matrix 与 matrix 参数中指定的矩阵相乘。
rotate(float angle, int order)在指定顺序下,对此 Matrix 进行顺时针旋转,旋转角度由 angle 参数指定,围绕原点(零 x 和 y 坐标)进行。
rotate(float angle)在默认(Prepend)顺序下,对此 Matrix 进行顺时针旋转,旋转角度由 angle 参数指定,围绕原点(零 x 和 y 坐标)进行。
rotateAt(float angle, PointF point, int order)在指定顺序下,对此 Matrix 进行关于指定点的顺时针旋转。
rotateAt(float angle, PointF point)在默认(Prepend)顺序下,对此 Matrix 进行关于指定点的顺时针旋转。
reset()将此 Matrix 重置为单位矩阵。
hashCode()返回此实例的哈希码。
equals(Object obj)确定指定的 Object 是否等于此实例。
isIdentity()如果此 AffineTransform 是单位变换,则返回 true

Matrix()

public Matrix()

将 Matrix 类初始化为单位矩阵的新实例。

Matrix(float m11, float m12, float m21, float m22, float m31, float m32)

public Matrix(float m11, float m12, float m21, float m22, float m31, float m32)

Matrix 类初始化为新实例。

Parameters:

参数类型描述
m11floatm00 M11 缩放 X
m12floatm10 M12 剪切 Y
m21floatm01 M21 剪切 X
m22floatm11 M22 缩放 Y
m31floatm02 M31 平移 X
m32floatm12 M32 平移 Y

Matrix(RectangleF rect, PointF[] plgpts)

public Matrix(RectangleF rect, PointF[] plgpts)

Matrix 类初始化为由指定矩形和点数组定义的几何变换的新实例。

Parameters:

参数类型描述
rectRectangleF一个表示要转换的矩形的 RectangleF 结构。
plgptsPointF[]一个包含三个 PointF 结构的数组,表示用于将矩形的左上角、右上角和左下角转换后的平行四边形的点。平行四边形的右下角由前面三个角隐含。

Matrix(Rectangle rect, Point[] plgpts)

public Matrix(Rectangle rect, Point[] plgpts)

Matrix 类初始化为由指定矩形和点数组定义的几何变换的新实例。

Parameters:

参数类型描述
rectRectangle表示要转换的矩形的 Rectangle 结构。
plgptsPoint[]一个包含三个 Point 结构的数组,表示要将矩形的左上、右上和左下角转换到的平行四边形的三个顶点。平行四边形的右下角由前面三个顶点隐含。

Matrix(Matrix origin)

public Matrix(Matrix origin)

创建 Matrix 类的副本。

Parameters:

参数类型描述
originMatrix用于配合的基矩阵。

TYPE_IDENTITY

public static final int TYPE_IDENTITY

恒等变换是指输出坐标始终与输入坐标相同的变换。如果该变换不是恒等变换,则其类型将是常量 GENERAL_TRANSFORM,或是针对该变换执行的各种坐标转换的相应标志位的组合。

TYPE_TRANSLATION

public static final int TYPE_TRANSLATION

平移在 x 和 y 方向上以恒定量移动坐标,而不改变向量的长度或角度。

TYPE_UNIFORM_SCALE

public static final int TYPE_UNIFORM_SCALE

统一缩放在 x 和 y 方向上以相同的比例乘以向量的长度,且不改变向量之间的角度。此标志位与 TypeGeneralScale 标志互斥。

TYPE_GENERAL_SCALE

public static final int TYPE_GENERAL_SCALE

通用缩放在 x 和 y 方向上以不同的比例乘以向量的长度,且不改变垂直向量之间的角度。此标志位与 TypeUniformScale 标志互斥。

TYPE_MASK_SCALE

public static final int TYPE_MASK_SCALE

此常量是用于任意缩放标志位的位掩码。

TYPE_FLIP

public static final int TYPE_FLIP

此标志位表示由该对象定义的变换在某一轴上执行镜像翻转,除了其他标志位指示的转换外,还将通常的右手坐标系转换为左手坐标系。右手坐标系指正 X 轴逆时针旋转以覆盖正 Y 轴,类似于右手拇指指向观察方向时手指的卷曲方向。左手坐标系指正 X 轴顺时针旋转以覆盖正 Y 轴,类似于左手拇指指向观察方向时手指的卷曲方向。由于在适当的调整旋转下所有翻转角度相同,无法通过数学方式确定原始翻转或镜像变换的角度。注意:TypeFlip 是在 GENERAL_TRANSFORM 已公开流通后添加的,因而无法方便地重新编号标志位,否则会在外部代码中引入二进制不兼容。

TYPE_QUADRANT_ROTATION

public static final int TYPE_QUADRANT_ROTATION

此标志位表示由该对象定义的变换在执行其他标志位指示的转换之外,还进行以 90 度的整数倍为单位的象限旋转。旋转会以相同的角度改变向量的方向,而不改变向量的长度。此标志位与 TypeGeneralRotation 标志互斥。

TYPE_GENERAL_ROTATION

public static final int TYPE_GENERAL_ROTATION

此标志位表示由该对象定义的变换在执行其他标志位指示的转换之外,还进行任意角度的旋转。旋转会以相同的角度改变向量的方向,而不改变向量的长度。此标志位与

TYPE_MASK_ROTATION

public static final int TYPE_MASK_ROTATION

此常量是用于任意旋转标志位的位掩码。

TYPE_GENERAL_TRANSFORM

public static final int TYPE_GENERAL_TRANSFORM

此常量表示由该对象定义的变换对输入坐标进行任意转换。如果该变换可以归类于上述任意常量,则其类型将是常量 TypeIdentity,或是针对该变换执行的各种坐标转换的相应标志位的组合。

isEquals(Matrix a, Matrix b)

public static boolean isEquals(Matrix a, Matrix b)

确定两个矩阵是否相等。

Parameters:

参数类型描述
aMatrix要比较的第一个矩阵。
bMatrix要比较的第二个矩阵。

Returns: boolean - 如果矩阵相等则为 True。

getM11()

public final float getM11()

获取第一行第一列的矩阵元素。表示沿 X 轴的缩放。

Returns: float - 第一行第一列的矩阵元素。

getM12()

public final float getM12()

获取第一行第二列的矩阵元素。表示沿 Y 轴的剪切。

Returns: float - 第一行第二列的矩阵元素。

getM21()

public final float getM21()

获取第二行第一列的矩阵元素。表示沿 X 轴的剪切。

Returns: float - 第二行第一列的矩阵元素。

getM22()

public final float getM22()

获取第二行第二列的矩阵元素。表示沿 Y 轴的缩放。

Returns: float - 第二行第二列的矩阵元素。

getM31()

public final float getM31()

获取第三行第一列的矩阵元素。表示沿 X 轴的平移。

Returns: float - 第三行第一列的矩阵元素。

getM32()

public final float getM32()

获取第三行第一列的矩阵元素。表示沿 Y 轴的平移。

Returns: float - 第三行第一列的矩阵元素。

toString()

public String toString()

返回表示此实例的字符串。

Returns: java.lang.String - 表示此实例的字符串。

getElements()

public final float[] getElements()

获取矩阵元素的副本。

Returns: float[] - 矩阵元素的副本。

transformPoints(PointF[] points)

public final void transformPoints(PointF[] points)

对指定的点数组应用此 Matrix 所表示的几何变换。

Parameters:

参数类型描述
pointsPointF[]这些点。

scale(float scaleX, float scaleY, int order)

public final void scale(float scaleX, float scaleY, int order)

使用指定的顺序将指定的缩放向量(scaleX 和 scaleY)应用于此 Matrix

Parameters:

参数类型描述
scaleXfloatX 轴比例。
scaleYfloatY 轴比例。
orderint顺序。

scale(float sx, float sy)

public final void scale(float sx, float sy)

使用(默认)Prepend 顺序将指定的缩放向量(scaleX 和 scaleY)应用于此 Matrix。

Parameters:

参数类型描述
sxfloat该 sx。该 sx。该 sx。
syfloat该 sy。该 sy。该 sy。

translate(float offsetX, float offsetY, int order)

public final void translate(float offsetX, float offsetY, int order)

在指定顺序下,将指定的平移向量应用于此 Matrix。

Parameters:

参数类型描述
offsetXfloatX 偏移。
offsetYfloatY 偏移。
orderint顺序。

translate(float tx, float ty)

public final void translate(float tx, float ty)

在(默认)Prepend 顺序下,将指定的平移向量应用于此 Matrix

Parameters:

参数类型描述
txfloat该 tx。该 tx。该 tx。
tyfloat该 ty。该 ty。该 ty。

multiply(Matrix tTx, int order)

public final void multiply(Matrix tTx, int order)

将此 Matrix 与 matrix 参数中指定的矩阵相乘,并按 order 参数中指定的顺序进行。

Parameters:

参数类型描述
tTxMatrix该 tx。该 tx。该 tx。
orderint顺序。顺序。顺序。

multiply(Matrix tTx)

public final void multiply(Matrix tTx)

在(默认)Prepend 顺序下,将此 Matrix 与 matrix 参数中指定的矩阵相乘。

Parameters:

参数类型描述
tTxMatrix用于相乘的矩阵。

rotate(float angle, int order)

public final void rotate(float angle, int order)

在指定顺序下,对此 Matrix 进行顺时针旋转,旋转角度由 angle 参数指定,围绕原点(零 x 和 y 坐标)进行。

Parameters:

参数类型描述
anglefloat旋转角度。
orderint矩阵顺序。

rotate(float angle)

public final void rotate(float angle)

在默认(Prepend)顺序下,对此 Matrix 进行顺时针旋转,旋转角度由 angle 参数指定,围绕原点(零 x 和 y 坐标)进行。

Parameters:

参数类型描述
anglefloat旋转角度。

rotateAt(float angle, PointF point, int order)

public final void rotateAt(float angle, PointF point, int order)

在指定顺序下,对此 Matrix 进行关于指定点的顺时针旋转。

Parameters:

参数类型描述
anglefloat角度。
pointPointF该点。
orderint顺序。

rotateAt(float angle, PointF point)

public final void rotateAt(float angle, PointF point)

在默认(Prepend)顺序下,对此 Matrix 进行关于指定点的顺时针旋转。

Parameters:

参数类型描述
anglefloat角度。
pointPointF该点。

reset()

public final void reset()

将此 Matrix 重置为单位矩阵。

hashCode()

public int hashCode()

返回此实例的哈希码。

Returns: int - 此实例的哈希码,适用于哈希算法和哈希表等数据结构。

equals(Object obj)

public boolean equals(Object obj)

确定指定的 Object 是否等于此实例。

Parameters:

参数类型描述
objjava.lang.Object用于与此实例比较的 Object

Returns: 布尔值 - 如果指定的 Object 等于此实例,则为 true;否则为 false

isIdentity()

public boolean isIdentity()

如果此 AffineTransform 是单位变换,则返回 true

Returns: 布尔值 - 如果此 AffineTransform 是恒等变换,则为 true;否则为 false