【问题标题】:Java Layering ImagesJava 分层图像
【发布时间】:2013-11-28 21:57:23
【问题描述】:

我正在尝试设置背景图像,然后在该背景图像之上进行处理,但我遇到的问题是背景覆盖了其他所有内容。我希望有人能告诉我如何正确分层图像。

目前我绘制背景的代码是这样的,

@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();
}

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

【问题讨论】:

  • 到目前为止你的代码是什么样的?
  • @AndrewThompson 我有 85% 的把握认为这是有道理的。
  • 这很有帮助@AndrewThompson

标签: java image background


【解决方案1】:

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

@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();
}

将绘制到 Graphics 上下文视为堆积纸张。每个绘图调用都会检查它之前所做的事情。当您绘制新图像时,它会覆盖之前的所有内容。

【讨论】:

  • 我本可以发誓我已经尝试过了,但是当我在您的建议后再次尝试时,它终于奏效了,非常感谢!
  • 那么你怎么能用图像做到这一点。假设我有一堆卡片,我想将一张卡片叠放在另一张卡片上,它们之间的水平偏移量约为 50 像素。这是完整的讨论线程。 stackoverflow.com/questions/32218170/…
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-03-24
  • 1970-01-01
  • 2011-02-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多