Java Graphics2D规模翻倍

时间:2015-02-28 23:20:49

标签: java scale graphics2d

我在使用Java中的Graphics2D缩放对象时遇到问题。在我的paintComponent中,我创建了两个graphics2D对象,以便于管理。然后我尝试缩放它们。问题是输出缩放为x4(缩放命令相互影响)。 否则一切都会呈现出来。

如何最好地解决这个问题。

有问题的代码:

@Override
public void paintComponent(Graphics g) {
    playerGraphics     = (Graphics2D) g;
    backgroundGraphics = (Graphics2D) g;

    playerGraphics.scale(2.0, 2.0);
    backgroundGraphics.scale(2.0, 2.0);

    backgroundGraphics.drawImage(background.getBackground(), 0, 0, null);

    for(int i = 0; i < noPlayers; i++) {
        playerGraphics.drawImage(players.get(i).getCurrentSprite(), players.get(i).getXPos(), players.get(i).getYPos(), null);  
    }
}

1 个答案:

答案 0 :(得分:4)

playerGraphicsbackgroundGraphics变量都是对同一Graphics实例的引用。因此,当你打电话

playerGraphics.scale(2.0, 2.0);
backgroundGraphics.scale(2.0, 2.0);

您实际上是将相同的图形对象缩放两次,因此您将其缩放四倍。尝试在其中一个上调用scale方法,或者更好的是,只有一个Graphics2D可以调用方法。