我需要在Slick2D中获得一个旋转版本的图像,并且当你调用setRotation(..)方法时图像实际上没有旋转,但只有在图形上下文中绘制它时才会旋转,我必须& #34;绘制"我自己的形象纹理。
Image original = image.copy();
try {
image = new Image(original.getWidth(), original.getHeight());
Graphics g = image.getGraphics();
original.setRotation(rotation*90);
g.drawImage(original, 0, 0);
g.destroy();
} catch (SlickException e) {
}
因此,此代码有效,旋转为0到4(0,1,2或3)之间的整数值。 但是当我删除
image = new Image(original.getWidth(), original.getHeight());
它不再起作用,我的问题是:为什么? 它应该在没有它的情况下工作,图像已经存在并且应该能够在其图形上绘制,但不是这样,只有当我再次创建具有相同宽度和高度的新图像时才可能。如果我不这样做,那么创建的图像就会变得怪异而且混乱,比以前更小。它必须是一个完全"空的"想要的图像是通过它的图形来处理吗?
感谢您提前提供任何帮助和澄清。
答案 0 :(得分:0)
每当我使用图像旋转时,我只是复制了这个图像并像这样旋转它:
public Image getRotatedCopy(Image i, float angleDeg) {
Image rotated = i.copy();
rotated.setRotation(angleDeg);
rotated.rotate();
return rotated;
}
然后当您需要设置图像以进行旋转时,只需使用
g.drawImage(getRotatedCopy(someImage, angleDeg), x, y);
希望这会有所帮助:)