Java 如何使用仿射变换&x27;谁来翻译?

Java 如何使用仿射变换&x27;谁来翻译?,java,swing,awt,affinetransform,Java,Swing,Awt,Affinetransform,我不是问仿射变换是如何工作的,而是如何使用它的变换方法 我读了很多次API,但仍然不明白它是如何工作的 公共无效转换(双tx,双ty) 将此转换与转换转换连接起来。这相当于调用concatenate(T),其中T是由以下矩阵表示的仿射变换: [ 1 0 tx ] [ 0 1 ty ] [ 0 0 1 ] 问题: translate(100,0)以某种方式将图像向右移动+100像素,向下移动+100像素。

我不是问仿射变换是如何工作的,而是如何使用它的变换方法

我读了很多次API,但仍然不明白它是如何工作的

公共无效转换(双tx,双ty)

将此转换与转换转换连接起来。这相当于调用concatenate(T),其中T是由以下矩阵表示的仿射变换:

      [   1    0    tx  ]
      [   0    1    ty  ]
      [   0    0    1   ]
问题:

  • translate(100,0)以某种方式将图像向右移动+100像素,向下移动+100像素。为什么会这样

  • 如果需要经常移动图像,是否使用translate()移动图像?如果没有,在一帧中移动旋转/旋转图像的推荐方法/方式是什么

  • translate(100,0)以某种方式将图像向右移动+100像素,向下移动+100像素。为什么会这样

    一般来说,是的,它应该将图形偏移移动到100x和0y,这意味着
    Graphics
    上下文的
    0x0
    位置现在将从原始
    Graphics
    上下文的原点开始
    100x0

    请记住,翻译是累积的,这意味着如果您以前以某种方式翻译过
    图形
    上下文,现在将添加到上下文中(第一次翻译
    0x100
    ,第二次翻译
    100x0
    ,您现在是从原始
    图形
    上下文原点开始翻译的
    100x100

    如果我需要经常移动图像,是否使用translate()来移动图像?如果不需要,建议使用什么方法/方法来移动帧中的旋转/旋转图像

    通常,我使用
    Graphics#create
    来创建
    Graphics
    上下文的副本(这会复制当前状态/属性,但仍会将输出生成回
    Graphics
    上下文的原始输出),将翻译应用于副本,绘制我想要的任何内容,然后对副本进行
    dispose
    。这使原始上下文保持不变(关于我已更改的属性)

    这意味着您可以单独执行多个翻译,这不会影响以后执行的其他翻译


    另一种方法是反转翻译,但坦率地说,在副本上调用
    dispose
    更简单、更容易…

    1-通常是的,它应该移动100x和0y,为什么不需要一个可运行的示例来确定。2-这取决于。通常情况下,我会在应用它或保留co之前创建图形上下文的副本原稿的py,否则,您需要将其反转。请记住,您应用的任何翻译都非常感谢您的解决方案。但是,您是否能够解释为什么当我只向
    tx
    提供100时,它会向下移动和向右移动?显示通过提供
    tx
    100,图像应该只向右移动100πXEL。但是为什么java的翻译也会把它移下来?除非你能给出一个可运行的例子。否则你可能会考虑看看我可以用一个初始转换来解决什么问题。