为什么你必须在Slick2D中创建一个新的Image来处理它的Graphics?

时间:2014-05-02 12:26:50

标签: java image graphics rotation slick2d

我需要在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());

它不再起作用,我的问题是:为什么? 它应该在没有它的情况下工作,图像已经存在并且应该能够在其图形上绘制,但不是这样,只有当我再次创建具有相同宽度和高度的新图像时才可能。如果我不这样做,那么创建的图像就会变得怪异而且混乱,比以前更小。它必须是一个完全"空的"想要的图像是通过它的图形来处理吗?

感谢您提前提供任何帮助和澄清。

1 个答案:

答案 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);

希望这会有所帮助:)