我正在尝试设置背景图像,然后在背景图像上放一些东西,但是我遇到的问题是背景在其他所有东西上都分层了。我希望有人可以向我展示如何正确地对图像进行分层。

到目前为止,我用来绘制背景的代码是这样,

@Override
public void paint(Graphics g) {
    super.paint(g);
    Graphics2D g2d = (Graphics2D) g;
    DoAnimation();
    if (bInGame) {
        PlayGame(g2d);
    } else {
        ShowIntroScreen(g2d);
    }
    g.drawImage(ii, 5, 5, this);
    //g.drawImage(Background, 0, 0, null);
    Toolkit.getDefaultToolkit().sync();
    g.dispose();
}


当激活时具有Background的g.drawImage将会是唯一出现的东西,但是当我注释掉它时,其他所有内容都会再次出现。我尝试将背景放到一个单独的文件中,希望它会将它放到其他所有文件的后面

最佳答案

您需要先绘制背景图像。在您的代码段中,最后绘制它。



@Override
public void paint(Graphics g) {
    super.paint(g);
    Graphics2D g2d = (Graphics2D) g;

    // assuming you want it behind everything else
    // drawn to g2d after this point
    g.drawImage(Background, 0, 0, null);

    DoAnimation();
    if (bInGame) {
        PlayGame(g2d);
    } else {
        ShowIntroScreen(g2d);
    }
    g.drawImage(ii, 5, 5, this);
    Toolkit.getDefaultToolkit().sync();
    g.dispose();
}


认为在图形上下文中绘图就像叠纸一样。每个抽奖电话都会遍历之前所做的一切。绘制新图像时,它会覆盖以前的所有内容。

10-07 13:57