我想用Affinetransform
来图像我是这样做的:
AffineTransform at = AffineTransform.getTranslateInstance(image.getWidth(null), image.getHeight(null));
at.rotate(Math.toRadians(getRadian()),image.getWidth(null)/2, image.getHeight(null)/2);
Graphics2D g2d = (Graphics2D) g;
g2d.drawImage(image, at, null);
但是现在我想设置图像的位置,我该怎么做?
感谢您的帮助
答案 0 :(得分:0)
首先,您不清楚要将哪个图像位置转换为必要的位置。让我提出一般规则。假设您希望能够围绕其内部坐标(ix,iy)旋转图像,然后将此内部位置放置到具有坐标(gx,gy)的新全局位置。并且旋转角度是" angleInRadians"。然后你的转变将是:
AffineTransform at = AffineTransform.getTranslateInstance(gx, gy);
at.rotate(angleInRadians);
at.translate(-ix, -iy);
你看到这里的事件顺序了吗?这是因为变换矩阵如何相互应用并定位矢量。如果你从头到尾阅读这个,那么我们做的是移动内部位置以协调开始,然后我们围绕这个开始旋转,然后我们将这个开始移动到必要的全局位置。
如果您需要移动图像中心,那么:
double ix = imageWidth / 2;
double iy = imageHeight / 2;
如果你想移动左上角,那么ix = 0和iy = 0,所以在这种情况下你可以跳过at.translate(-ix,-iy)。