我正在用 Java 创建一个小游戏,并且我有一个旋转的图像。
正如你在下面的两张图片中看到的,有一艘巨船在游戏中缓慢地旋转,但是当它到达某个点时它会被切断(由于它自己的小 BufferedImage)。
这是我的渲染代码:
public void drawImageRotated(BufferedImage img, double x, double y, double scale, double angle) {
x -= xScroll;
y -= yScroll;
BufferedImage image = new BufferedImage((int)(img.getWidth() * 1.5D), (int)(img.getHeight() * 1.5D), 2);
Graphics2D g = (Graphics2D)image.getGraphics();
g.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
g.rotate(Math.toRadians(angle), image.getWidth() / 2, image.getHeight() / 2);
g.drawImage(img, image.getWidth() / 2 - img.getWidth() / 2, image.getHeight() / 2 - image.getHeight() / 2, null);
g2d.drawImage(image, (int)(x-image.getWidth()*scale/2), (int)(y-image.getHeight()*scale/2), (int)(image.getWidth()*scale), (int)(image.getHeight()*scale), null);
g.dispose();
}
回到手头的问题,我怎样才能计算出旋转过程中图像的最大 x 和 y 大小,以便补偿缓冲图像的大小?