0

到目前为止,我已经通过创建和 Image 完成了双缓冲,使用其关联的 Graphics 对象将我想要的内容绘制到该 Image 上,然后使用 paint 方法的 Graphics 对象将该 Image 绘制到屏幕上。最近,我了解了 BufferStrategy 类及其用途。我想知道这两种方法的优缺点是什么。

编辑:我不认为我的问题很清楚。我想知道 DIY 方法和 BufferStrategy 的优缺点,以及何时(如果有的话)我应该使用其中一种。

4

2 回答 2

7

I've always had good results using the default BufferStrategy by being careful to

  • Always construct GUI components on the EDT
  • Never draw from a thread except the EDT

This excellent example must double buffer because it draws continually on the initial thread rather than the EDT. In contrast, this fairly busy example relies on nothing more than repaint() called in response to a Swing Timer. I rarely need an offscreen buffer except for a composite. Finally, this tutorial article offers more guidelines.

于 2010-01-15T00:13:18.857 回答
1

如果您还没有,我建议您阅读AWT 和 Swing 中的绘画。

如果您使用 JFrame,我认为您通常不需要 Do-It-Yourself 双缓冲。Swing 内置了默认打开的双缓冲。自己手动执行此操作只会减慢速度。您可以通过在任何 JComponents 上调用 isDoubleBufferingEnabled() 来检查双缓冲是否打开。

在某些情况下,您可能想自己执行此操作,但这应该是例外而不是规则。也许你正在做一些相关的事情,比如编写游戏,在这种情况下,我的建议可能不适用。无论如何,希望以上是有用的信息。

于 2010-01-14T20:35:41.897 回答