图像质量在Java Graphics2D Rotate中被破坏
我遇到了使用Graphics2D旋转方法旋转图像的问题。
这是我遇到的问题的图像:
当我移动球时,图像在旋转时完全失真。
这是我的旋转方法:
public static void rotate(BufferedImage img, Rectangle rect, int degrees) { Graphics2D g = (Graphics2D) img.createGraphics(); g.rotate(degrees, rect.x + rect.width/2, rect.y + rect.height/2); g.drawImage(img, rect.x, rect.y, rect.width, rect.height, null); g.dispose(); }
我能做些什么来避免质量损失吗?
因此,当球移动时,您将图像旋转几度并用新的图像覆盖原始图像? 每次旋转图像时,都会添加一点点失真; 在很多次旋转中,失真更加复杂。
相反,只需将原始图像保留在内存中,并存储它应该在屏幕上旋转的度数。 然后每次渲染时,将原始图像旋转当前的度数。
我知道这是一个非常古老的问题,但对于任何想要做类似事情的人,请尝试在g.drawImage之前添加以下代码
g.setRenderingHint(RenderingHints.KEY_INTERPOLATION, RenderingHints.VALUE_INTERPOLATION_BILINEAR);
这应该有助于使图像看起来更好。