我在使用 Graphcis2D 和 AffineTransform 将图像旋转到固定位置时遇到问题。
这个想法是根据身体的旋转来旋转图像。
由于图像的旋转角度与身体旋转的角度相匹配,因此旋转发生正确。然而,随着旋转的发生,图像不会被绘制到与身体应该被绘制的相同位置。绘制图片的方法代码如下:
public void paintPicture(Graphics g, Body body) {
Graphics2D g2 = (Graphics2D) g;
Vector2f[] vertices = ((Box) body.getShape()).getPoints(body.getPosition(), body.getRotation());
Vector2f topLeftCorner = vertices[0];
AffineTransform oldTransform = g2.getTransform();
AffineTransform at = new AffineTransform();
at.rotate(body.getRotation());
g2.setTransform(at);
g2.drawImage(this.img, (int) topLeftCorner.x, (int) topLeftCorner.y, null);
g2.setTransform(oldTransform);
}
任何想法可能导致图像移动而不是根据坐标(topLeftCorner.x,topLeftCorner.y)绘制它?