何时在使用JPanel时创建手动后台缓冲区?

时间:2014-07-28 19:13:27

标签: java jpanel bufferedimage double-buffering

我已经读过JPanel有一个双缓冲系统,但我也看到人们使用BufferedImage手动创建自己的后台缓冲区,这允许用户添加到实际渲染前的图像。

JPanel双缓冲是如何工作的,如果JPanel已经有双缓冲,为什么有人会创建自己的后台缓冲区呢?什么是需要/推荐BufferedImage作为缓冲区的时间示例?

1 个答案:

答案 0 :(得分:0)

从我所看到的通常是因为:

  • 他们已经加载了一个用作背景图像的图像,并希望在其上绘制(它们可能只是绘制图像,使其在未来渲染时硬件加速,同时使用相同的Graphics对象绘制其他所有内容用于调用drawImage)
  • 因为他们希望有一个简单的方法来扩展他们的图形,因为他们的面板调整大小drawImage(Image, 0, 0, panelWidth, panelHeight, ImageObserver)并且不希望在基于面板计算图形的动态绘图坐标时做额外的工作&# 39;当前尺寸(虽然这会导致图形看起来不那么好看,并且如果每次调整大小都没有缓存缩放图像,那么也可能存在性能问题。)
  • 因为在Swing之前的日子里它的旧代码是双重缓冲的,或者是人们从旧书中获取代码。

当所有相关绘画方法完成时,您在双缓冲绘画方法(如paintComponent(Graphics))中绘制的图形将立即可见。在这种情况下,没有理由使用BufferedImage来手动确保一次显示所有图形。