所有类


java.awt.geom
类 AffineTransform

java.lang.Object
  继承者 java.awt.geom.AffineTransform
所有已实现的接口:
Serializable, Cloneable

public class AffineTransform
   
   
   
   
   
extends Object
implements Cloneable, Serializable

AffineTransform 类表示 2D 仿射变换,它执行从 2D 坐标到其他 2D 坐标的线性映射,保留了线的“直线性”和“平行性”。可以使用一系列平移、缩放、翻转、旋转和剪切来构造仿射变换。

这样的坐标变换可以使用一个 3 行乘 3 列的矩阵来表示,最后一行默认为 [ 0 0 1 ]。此矩阵将源坐标 (x, y) 变换为目标坐标 (x', y'),方法是将坐标视为列向量,并用矩阵乘以坐标向量,步骤如下:

        [ x']   [  m00  m01  m02  ] [ x ]   [ m00x + m01y + m02 ]
        [ y'] = [  m10  m11  m12  ] [ y ] = [ m10x + m11y + m12 ]
        [ 1 ]   [   0    0    1   ] [ 1 ]   [         1         ]
 

另请参见:
序列化表格

字段摘要
static int TYPE_FLIP
          此标志位指示此对象定义的变换除了执行其他标志位指定的变换外,还执行关于某个坐标轴的镜像翻转操作,此操作将常见的右旋坐标系更改为左旋坐标系。
static int TYPE_GENERAL_ROTATION
          此标志位指示此对象定义的变换除了执行其他标志位指定的变换外,还执行任意角度的旋转操作。
static int TYPE_GENERAL_SCALE
          此标志位指示此对象定义的变换除了执行其他标志位指定的变换外,还执行常规缩放操作。
static int TYPE_GENERAL_TRANSFORM
          此常量指示此对象定义的变换执行输入坐标的任意转换操作。
static int TYPE_IDENTITY
          此常量指示此对象定义的变换是恒等变换。
static int TYPE_MASK_ROTATION
          此常量是所有旋转标志位的位掩码。
static int TYPE_MASK_SCALE
          此常量是所有缩放标志位的位掩码。
static int TYPE_QUADRANT_ROTATION
          此标志位指示此对象定义的变换除了执行其他标志位指定的变换外,还通过乘以 90 度的某个倍数执行象限旋转操作。
static int TYPE_TRANSLATION
          此标志位指示此对象定义的变换除了执行其他标志位指定的变换外,还执行平移操作。
static int TYPE_UNIFORM_SCALE
          此标志位指示此对象定义的变换除了执行其他标志位指定的变换外,还执行统一缩放操作。
 
构造方法摘要
AffineTransform()
          构造一个表示 Identity 变换的新 AffineTransform
AffineTransform(AffineTransform Tx)
          构造一个新 AffineTransform,让它作为指定的 AffineTransform 对象的副本。
AffineTransform(double[] flatmatrix)
          根据 double 精度值数组构造一个新 AffineTransform,该数组要么表示 3x3 变换矩阵的 4 非平移条目,要么表示它的 6 可指定条目。
AffineTransform(double m00, double m10, double m01, double m11, double m02, double m12)
          根据表示 3x3 变换矩阵 6 个可指定条目的 6 个 double 精度值构造一个新 AffineTransform
AffineTransform(float[] flatmatrix)
          根据一个浮点值数组构造一个新 AffineTransform,该数组要么表示 3x3 变换矩阵的 4 个非平移条目,要么表示其 6 个可指定条目。
AffineTransform(float m00, float m10, float m01, float m11, float m02, float m12)
          根据表示 6 个 3x3 变换矩阵可指定条目的 6 个浮点值构造一个新 AffineTransform
 
方法摘要
 Object clone()
          返回此 AffineTransform 对象的副本。
 void concatenate(AffineTransform Tx)
          以最常用的方式将 AffineTransform Tx 连接到此 AffineTransform Cx,以提供由 Tx 映射到以前用户空间的新用户空间。
 AffineTransform createInverse()
          返回表示逆向变换的 AffineTransform 对象。
 Shape createTransformedShape(Shape pSrc)
          返回新的 Shape 对象,它由此变换变换的指定 Shape 的几何形状定义。
 void deltaTransform(double[] srcPts, int srcOff, double[] dstPts, int dstOff, int numPts)
          通过此变换变换相对距离向量数组。
 Point2D deltaTransform(Point2D ptSrc, Point2D ptDst)
          变换由 ptSrc 指定的相对距离向量并将结果存储在 ptDst
 boolean equals(Object obj)
          如果此 AffineTransform 与指定的参数表示相同的仿射坐标变换,则返回 true
 double getDeterminant()
          返回变换的矩阵表示形式的决定因子。
 void getMatrix(double[] flatmatrix)
          在 3x3 仿射变换矩阵中检索 6 个可指定值,并将其置于 double 精度值的数组中。
static AffineTransform getRotateInstance(double theta)
          返回表示旋转变换的变换。
static AffineTransform getRotateInstance(double theta, double x, double y)
          返回绕锚点旋转坐标的变换。
static AffineTransform getScaleInstance(double sx, double sy)
          返回表示缩放变换的变换。
 double getScaleX()
          返回 3x3 仿射变换矩阵缩放元素 (m00) 的 X 坐标。
 double getScaleY()
          返回 3x3 仿射变换矩阵缩放元素 (m11) 的 Y 坐标。
static AffineTransform getShearInstance(double shx, double shy)
          返回表示剪切变换的变换。
 double getShearX()
          返回 3x3 仿射变换矩阵剪切元素 (m01) 的 X 坐标。
 double getShearY()
          返回 3x3 仿射变换矩阵剪切元素 (m10) 的 Y 坐标。
static AffineTransform getTranslateInstance(double tx, double ty)
          返回表示平移变换的变换。
 double getTranslateX()
          返回 3x3 仿射变换矩阵平移元素 (m02) 的 X 坐标。
 double getTranslateY()
          返回 3x3 仿射变换矩阵平移元素 (m12) 的 Y 坐标。
 int getType()
          检索描述此变换的转换属性的标志位。
 int hashCode()
          返回此变换的哈希码。
 void inverseTransform(double[] srcPts, int srcOff, double[] dstPts, int dstOff, int numPts)
          通过此变换逆向变换 double 精度坐标数组。
 Point2D inverseTransform(Point2D ptSrc, Point2D ptDst)
          逆向变换指定的 ptSrc 并将结果存储在 ptDst 中。
 boolean isIdentity()
          如果此 AffineTransform 是恒等变换,则返回 true
 void preConcatenate(AffineTransform Tx)
          以不常用的方式将 AffineTransform Tx 连接到此 AffineTransform Cx,从而 Tx 相对于绝对像素空间(而非相对于现有用户空间)修改坐标变换。
 void rotate(double theta)
          连接此变换与旋转变换。
 void rotate(double theta, double x, double y)
          连接此变换与绕锚点旋转坐标的变换。
 void scale(double sx, double sy)
          连接此变换与缩放变换。
 void setToIdentity()
          将此变换重置为 Identity 变换。
 void setToRotation(double theta)
          将此变换设置为旋转变换。
 void setToRotation(double theta, double x, double y)
          将此变换设置为平移的旋转变换。
 void setToScale(double sx, double sy)
          将此变换设置为缩放变换。
 void setToShear(double shx, double shy)
          将此变换设置为剪切变换。
 void setToTranslation(double tx, double ty)
          将此变换设置为平移变换。
 void setTransform(AffineTransform Tx)
          将此变换设置为指定 AffineTransform 对象中变换的副本。
 void setTransform(double m00, double m10, double m01, double m11, double m02, double m12)
          将此变换设置为 6 个 double 精度值指定的矩阵。
 void shear(double shx, double shy)
          连接此变换与剪切变换。
 String toString()
          返回表示此 Object 值的 String
 void transform(double[] srcPts, int srcOff, double[] dstPts, int dstOff, int numPts)
          通过此变换变换 double 精度坐标数组。
 void transform(double[] srcPts, int srcOff, float[] dstPts, int dstOff, int numPts)
          通过此变换变换 double 精度坐标数组并将结果存储在 float 数组中。
 void transform(float[] srcPts, int srcOff, double[] dstPts, int dstOff, int numPts)
          通过此变换变换浮点坐标数组并将结果存储在 double 数组中。
 void transform(float[] srcPts, int srcOff, float[] dstPts, int dstOff, int numPts)
          通过此变换变换浮点坐标数组。
 void transform(Point2D[] ptSrc, int srcOff, Point2D[] ptDst, int dstOff, int numPts)
          通过此变换变换点对象数组。
 Point2D transform(Point2D ptSrc, Point2D ptDst)
          变换指定的 ptSrc 并将结果存储在 ptDst 中。
 void translate(double tx, double ty)
          连接此变换与平移变换。
 
从类 java.lang.Object 继承的方法
finalize, getClass, notify, notifyAll, wait, wait, wait
 

字段详细信息

TYPE_IDENTITY

public static final int TYPE_IDENTITY
此常量指示此对象定义的变换是恒等变换。恒等变换是一种输出坐标始终与输入坐标相同的变换。如果此变换不是恒等变换,则类型要么是常量 GENERAL_TRANSFORM,要么是此变换执行的不同坐标转换的适当标志位的组合。

另请参见:
TYPE_TRANSLATION, TYPE_UNIFORM_SCALE, TYPE_GENERAL_SCALE, TYPE_FLIP, TYPE_QUADRANT_ROTATION, TYPE_GENERAL_ROTATION, TYPE_GENERAL_TRANSFORM, getType(), 常量字段值

TYPE_TRANSLATION

public static final int TYPE_TRANSLATION
此标志位指示此对象定义的变换除了执行其他标志位指定的变换外,还执行平移操作。平移按照常量 x 和 y 移动坐标,不改变向量的长度和角度。

另请参见:
TYPE_IDENTITY, TYPE_UNIFORM_SCALE, TYPE_GENERAL_SCALE, TYPE_FLIP, TYPE_QUADRANT_ROTATION, TYPE_GENERAL_ROTATION, TYPE_GENERAL_TRANSFORM, getType(), 常量字段值

TYPE_UNIFORM_SCALE

public static final int TYPE_UNIFORM_SCALE
此标志位指示此对象定义的变换除了执行其他标志位指定的变换外,还执行统一缩放操作。统一缩放在 x 和 y 方向上使用相同的量乘以向量的长度,不改变向量间的角度。此标志位与 TYPE_GENERAL_SCALE 标志位互斥。

另请参见:
TYPE_IDENTITY, TYPE_TRANSLATION, TYPE_GENERAL_SCALE, TYPE_FLIP, TYPE_QUADRANT_ROTATION, TYPE_GENERAL_ROTATION, TYPE_GENERAL_TRANSFORM, getType(), 常量字段值

TYPE_GENERAL_SCALE

public static final int TYPE_GENERAL_SCALE
此标志位指示此对象定义的变换除了执行其他标志位指定的变换外,还执行常规缩放操作。常规缩放在 x 和 y 方向上使用不同的量乘以向量的长度,不改变垂直向量之间的角度。此标志位与 TYPE_UNIFORM_SCALE 标志位互斥。

另请参见:
TYPE_IDENTITY, TYPE_TRANSLATION, TYPE_UNIFORM_SCALE, TYPE_FLIP, TYPE_QUADRANT_ROTATION, TYPE_GENERAL_ROTATION, TYPE_GENERAL_TRANSFORM, getType(), 常量字段值

TYPE_MASK_SCALE

public static final int TYPE_MASK_SCALE
此常量是所有缩放标志位的位掩码。

另请参见:
TYPE_UNIFORM_SCALE, TYPE_GENERAL_SCALE, 常量字段值

TYPE_FLIP

public static final int TYPE_FLIP
此标志位指示此对象定义的变换除了执行其他标志位指定的变换外,还执行关于某个坐标轴的镜像翻转操作,此操作将常见的右旋坐标系更改为左旋坐标系。右旋坐标系按逆时针方向旋转 X 正半轴能覆盖 Y 正半轴,类似于凝视拇指末端时右手其余手指弯曲的方向。左旋坐标系按顺时针方向旋转 X 正半轴能覆盖 Y 正半轴,类似于左手手指弯曲的方向。不存在确定初始反转或镜像变换角度的数学方式,因为给定适当的调整旋转后,反转的所有角度都相同。

另请参见:
TYPE_IDENTITY, TYPE_TRANSLATION, TYPE_UNIFORM_SCALE, TYPE_GENERAL_SCALE, TYPE_QUADRANT_ROTATION, TYPE_GENERAL_ROTATION, TYPE_GENERAL_TRANSFORM, getType(), 常量字段值

TYPE_QUADRANT_ROTATION

public static final int TYPE_QUADRANT_ROTATION
此标志位指示此对象定义的变换除了执行其他标志位指定的变换外,还通过乘以 90 度的某个倍数执行象限旋转操作。旋转按相同的量更改向量的角度,不管向量的初始方向如何,也不改变向量的长度。此标志位与 TYPE_GENERAL_ROTATION 标志互斥。

另请参见:
TYPE_IDENTITY, TYPE_TRANSLATION, TYPE_UNIFORM_SCALE, TYPE_GENERAL_SCALE, TYPE_FLIP, TYPE_GENERAL_ROTATION, TYPE_GENERAL_TRANSFORM, getType(), 常量字段值

微信小程序

微信扫一扫体验

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部