Java 仿射变换形式和图形二维图形位置

Java 仿射变换形式和图形二维图形位置,java,graphics,transform,graphics2d,affinetransform,Java,Graphics,Transform,Graphics2d,Affinetransform,代码: 这将在位置[0,0]、[16,8]、[32,16]处绘制我的图像(原始尺寸16x16)。 i、 e.它取现在变换的原始轴,并在变换后的坐标上绘制 然而,我并不总是想要这样。 如何让图像以我输入的精确坐标显示,而忽略变换后的X轴和Y轴?在将图形2D对象设置为新变换之前,您需要保存该对象的变换,这样,在完成变换后,您只需切换到原始参考系即可 AffineTransform at = new AffineTransform(); at.scale(2, 1); at.rotate(Math.t

代码:

这将在位置[0,0]、[16,8]、[32,16]处绘制我的图像(原始尺寸16x16)。 i、 e.它取现在变换的原始轴,并在变换后的坐标上绘制

然而,我并不总是想要这样。
如何让图像以我输入的精确坐标显示,而忽略变换后的X轴和Y轴?

在将
图形2D
对象设置为新变换之前,您需要保存该对象的变换,这样,在完成变换后,您只需切换到原始参考系即可

AffineTransform at = new AffineTransform();
at.scale(2, 1);
at.rotate(Math.toRadians(45));
at = new AffineTransform(at);
at.translate(-img.getWidth()/2, -img.getHeight()/2);
g2D.setTransform(at);
g2D.drawImage(img, 0, 0, null);
g2D.drawImage(img, 16, 0, null);
g2D.drawImage(img, 32, 0, null);
g2D.dispose();

这很好,但并不能完全回答我的问题。这样做的目的是在绘制图像后重置转换。然而,这不是我的问题。我的问题是,如果在我的
图形2d
上应用我的
仿射变换
,x轴和y轴也会变换。我想在非变换轴上绘制变换图像。不过,我非常感谢你的回答。你的回答确实让我想到了
AffineTransformOp
,因为你使用了一些我以前没有想到的东西,这让我想到了这一点。我现在正在使用
AffineTransformOp
转换图像,它只转换图像而不转换图形。谢谢
AffineTransform at = new AffineTransform();
AffineTransform g2dAffineTransform = g2d.getTransform();
at.scale(2, 1);
at.rotate(Math.toRadians(45));
at = new AffineTransform(at);
at.translate(-img.getWidth()/2, -img.getHeight()/2);
g2D.setTransform(at);
g2D.drawImage(img, 0, 0, null);
g2D.drawImage(img, 16, 0, null);
g2D.drawImage(img, 32, 0, null);

//Reset the transform
g2d.setTransform(g2dAffineTransform);
//All rendering with this g2d is now at the original coordinate system
//g2d.draw...
g2D.dispose();