Java 旋转缓冲区图像并将其移动到某个点

Java 旋转缓冲区图像并将其移动到某个点,java,swing,rotation,jframe,bufferedimage,Java,Swing,Rotation,Jframe,Bufferedimage,我读过很多BuffereImage旋转帖子,发现旋转它的方法是使用仿射变换(at)和at.rotate(double,int,int)。我让它工作,我可以转动它,但我想移动它,让它在屏幕上的不同位置显示。为此,我使用了at.translate(int,int)。但是,int与我使用的实际JFrame不一致,并且它在不同于旋转点的点上旋转。相对于旋转方法,平移是如何工作的?这是我尝试使用的代码 public void draw(Graphics2D g){ counter++; g

我读过很多BuffereImage旋转帖子,发现旋转它的方法是使用仿射变换(at)和at.rotate(double,int,int)。我让它工作,我可以转动它,但我想移动它,让它在屏幕上的不同位置显示。为此,我使用了at.translate(int,int)。但是,int与我使用的实际JFrame不一致,并且它在不同于旋转点的点上旋转。相对于旋转方法,平移是如何工作的?这是我尝试使用的代码

public void draw(Graphics2D g){
    counter++;
    g.drawImage(animation.getImage(), (int)x, (int)y, null);
    if (counter * .05 > Math.PI * 2)
        counter = 0;
    g.rotate(counter * .05, test.getWidth() / 2, test.getHeight() / 2);
    g.drawImage(test, at, null);
    g.rotate(-counter * .05, test.getWidth() / 2, test.getHeight() / 2);
}

可以忽略g.drawImage(animation.getImage(),(int)x,(int)y,null);那就是画一幅不同的画。我添加了旋转量,以便它以正常角度绘制动画。getImage(),这就是我添加计数器的原因。“at”在哪里,它是如何定义的?抱歉,at是仿射变换(如上代码所述),它仅定义为一个新的仿射变换(),我没有对其进行任何调整。当我尝试执行at.translate(double,double)时,它会在不同的点上旋转。我认为您需要专注于围绕其赢得的上下文而不是容器上下文旋转缓冲图像。如果单独生成缓冲图像,您可以生成一个旋转版本,然后在需要的地方简单地绘制它(1)为了更快地获得更好的帮助,请发布一个(最小的完整测试和可读示例)。2) 例如,获取图像的一种方法是热链接到中看到的图像。