【发布时间】:2018-08-26 08:20:32
【问题描述】:
我正在尝试使用 Java 制作动画,但无法理解 DoubleBufferImage 和 DoubleBufferGraphics。我了解 update()、render() 和 paint() 序列。但是,在每个方法中,我无法理解它是如何绘制的。这是代码。
游戏更新() // 我将跳过更新部分,因为我首先需要了解背景。
-
游戏渲染()
private void gameRender() { if (DoubleBufferImage == null) { System.out.println("The Image is null: Error occurence"); DoubleBufferImage = createImage(P_WIDTH - 15, P_HEIGHT - 15); } DoubleBufferGraphic = DoubleBufferImage.getGraphics(); DoubleBufferGraphic.setColor(Color.LIGHT_GRAY); DoubleBufferGraphic.fillRect(0, 0, P_WIDTH, P_HEIGHT); DoubleBufferGraphic.setColor(Color.BLUE); DoubleBufferGraphic.setFont(font); DoubleBufferGraphic.drawString("Average FPS/UPS: " + df.format(averageFPS) + df.format(averageUPS), 10, 10); } -
绘画()
public void paintScreen() { Graphics g; try { g = this.getGraphics(); if ((g != null) && (DoubleBufferImage != null)) { g.drawImage(DoubleBufferImage, 0, 0, null); } Toolkit.getDefaultToolkit().sync(); } catch (Exception e) { System.out.println("Graphics context error: " + e); } }
还有从 Jpanel 覆盖的 paintComponent 方法。
public void paintComponent(Graphics g) {
super.paintComponent(g);
if (DoubleBufferImage != null) {
g.drawImage(DoubleBufferImage, 0, 0, null);
}
}
这是我的问题。运行为更新->渲染->和绘画 但是,正如您从渲染中看到的那样,他们使用图形进行绘制。但这都是在 DoubleBufferImage 中绘制的吗? Image 实例是否类似于面板实例?我的意思是,它只是可添加到框架中吗? 由于这是双缓冲系统,所以我想知道哪些方法是直接绘制的,哪些是预先绘制的方法。 最后在运行中,没有代码表明我们制作的图像或图形将被添加到面板中。我只想知道绘制 BufferedImage 的时间。 请帮忙!我无法上传整个代码,所以我不确定你们是否能理解:(
【问题讨论】: