【问题标题】:How to draw on a JPanel using Graphics如何使用图形在 JPanel 上绘图
【发布时间】:2020-08-27 15:55:41
【问题描述】:

我正在做一个项目,我已经制作了一个菜单和一个JPanel,但现在我想在JPanel 上画图并在我的游戏中添加一些HUD。

我正在为我的游戏的最终面板提供一张图片,我想在左侧添加一个带有玩家头部的蓝色矩形,在右侧添加另一个带有动作、金钱等的矩形,但我想在我的窗口之外构建它们我在其中构造框架和所有 JPanel 的类。一般来说,既然玩家选择玩本地游戏,我希望能够在游戏继续时在此面板上绘制和擦除。

private void render() {
    BufferStrategy bs = this.getBufferStrategy();
    if (bs == null) {
        this.createBufferStrategy(1);
        return;
    }
    
    Graphics g = null;
    
    window.render();
    if (gameState == STATE.MultiPlay) {
        handler.render(g);
        hud.render(g);
    }
    if (gameState == STATE.LocalPlay) {
        handler.render(g);
        hud.render(g);
    }
}

我提供的代码是我在游戏引擎类中使用的渲染方法。使用我的游戏引擎,我已经让这个方法每秒循环 10 次,我想从这里实例化 Graphics 类,然后继续使用另一个类并渲染我想要在 JPanel 上绘制的所有内容。

我如何使用Graphics 或类似的东西来绘制JPanel

【问题讨论】:

  • 我如何使用 Graphics 在 JPanel 上绘图 - 我们发布的代码使用的是 BufferedStrategy,这意味着您使用的是 Canvas,而不是 JPanel,所以我不是真的理解你的问题。如果您使用 Canvas,那么您只需将您的绘画代码添加到您的其他绘画逻辑中。所以你需要在你的类中添加“属性”来控制你做什么或不画画。如果您使用的是 Swing,不知道这是否有帮助,但您可以查看 How to Decorate Component with JLayer Class
  • 查看 Oracle 教程Performing Custom Painting
  • 问题是使用画布不起作用所以这就是我问这个问题的原因
  • 1) 为了尽快获得更好的帮助,edit 添加minimal reproducible exampleShort, Self Contained, Correct Example。硬编码要绘制的数据。 2) 提示:添加@camickr(或重要的@)以通知此人有新评论。
  • @Kamora 使用画布不起作用,您已获得有关如何在 JPanel 上进行自定义绘画的 Swing 教程的链接。

标签: java swing graphics jpanel


【解决方案1】:

你必须像这样使用 Graphics 对象:

Graphics g= bs.getDrawGraphics();

我认为它会很有用,祝你有美好的一天。

PD:如果你不想这样做,你也可以重写方法paint(Graphcis g)并使用参数。

【讨论】:

  • 我以前也有过这样的情况,但它没有用...我做了更多的研究,我认为问题在于为 Swing 类运行的线程和我为我的游戏引擎使用的线程不进行通信,因此图形无法在 JPanel 上绘制......虽然我不太确定是不是这样。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-01-10
  • 2011-09-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多