我正在尝试设置背景图像,然后在背景图像上放一些东西,但是我遇到的问题是背景在其他所有东西上都分层了。我希望有人可以向我展示如何正确地对图像进行分层。
到目前为止,我用来绘制背景的代码是这样,
@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();
}
认为在图形上下文中绘图就像叠纸一样。每个抽奖电话都会遍历之前所做的一切。绘制新图像时,它会覆盖以前的所有内容。