【发布时间】: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 example 或Short, Self Contained, Correct Example。硬编码要绘制的数据。 2) 提示:添加@camickr(或重要的
@)以通知此人有新评论。 -
@Kamora 使用画布不起作用,您已获得有关如何在 JPanel 上进行自定义绘画的 Swing 教程的链接。
标签: java swing graphics jpanel