到目前为止,我已经通过创建和Image完成了双缓冲,使用相关的Graphics对象绘制我想要的图像,然后使用paint方法的Graphics对象将该Image绘制到屏幕上。最近,我了解了BufferStrategy类及其用法。我想知道这两种方法的优点和缺点是什么。
编辑: 我不认为我的问题非常明确。我想知道DIY方法和BufferStrategy的利弊,以及何时,如果有的话,我应该使用其中一种。
答案 0 :(得分:7)
通过小心
,我使用默认的BufferStrategy
总能取得好成绩
这个优秀的example 必须双缓冲区,因为它不断地在初始线程而不是EDT上绘制。相比之下,这个相当忙碌的example仅仅依赖于repaint()
来响应Swing Timer
。除了composite之外,我很少需要屏幕外缓冲区。最后,这个tutorial article提供了更多指导。
答案 1 :(得分:1)
如果你没有,我建议你阅读Painting in AWT and Swing。
如果您使用JFrame,我认为您通常不需要自己动手双重缓冲。 Swing内置了双缓冲功能,默认情况下处于启用状态。自己手动完成此操作只会减慢速度。您可以通过在任何JComponents上调用isDoubleBufferingEnabled()来检查是否启用了双缓冲。
在某些情况下,您可能希望自己这样做,但这应该是例外而不是规则。也许你正在做一些像写游戏这样的事情,在这种情况下,我的建议可能不适用。无论如何,希望以上是有用的信息。