【问题标题】:BufferStrategy vs DIY Double Buffering in JFrameJFrame 中的 BufferStrategy 与 DIY 双缓冲
【发布时间】:2010-01-14 20:13:47
【问题描述】:

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

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

【问题讨论】:

    标签: java jframe doublebuffered


    【解决方案1】:

    我一直使用默认的BufferStrategy 得到很好的结果,但要小心

    • 始终在EDT 上构建 GUI 组件
    • 切勿从除EDT 之外的线程中绘图

    这个出色的example 必须双缓冲区,因为它在初始线程而不是EDT 上持续绘制。相反,这个相当繁忙的example 仅依赖于repaint() 以响应Swing Timer。除了composite,我很少需要屏幕外缓冲区。最后,tutorial article 提供了更多指导。

    【讨论】:

    【解决方案2】:

    如果您还没有阅读,我建议您阅读Painting in AWT and Swing

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

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

    【讨论】:

      猜你喜欢
      • 2013-10-14
      • 2012-03-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-08-14
      • 2010-12-12
      • 2013-04-01
      • 2011-02-20
      相关资源
      最近更新 更多