使用awt实现双缓冲技术

7

在Java中,是否可以使用AWT进行双缓冲?目前,我知道不应该将Swing与AWT一起使用,因此无法使用BufferStrategy等(我已经编写了一些AWT代码,不想在Swing中重写)。

如果AWT可以使用双缓冲,那么我需要手动编写缓冲区吗?与Swing不同,AWT似乎没有相同的内置双缓冲功能。

如果我确实需要手动编写代码,是否有好的教程可供参考?或者对于初学者程序员来说,使用Swing更容易/明智吗?

抱歉这是一个多步骤问题。感谢您的时间:)

1个回答

6

这个问题在网上很容易找到答案。只需搜索“double buffer awt”,就会找到许多示例。你甚至可以看到我在1998年使用Java 1.0 AWT编写的一个旧示例。你只需要实例化自己的Graphics对象并绘制到Image中,然后将该图像复制到画布中。以下是我的示例中的关键代码:

  public void paint(Graphics g) {
    if (doubleBuffer) {
      paintSky(top.gBuf);
      g.drawImage(top.buf, 0, 0, this);
    } else {
      paintSky(g);
    }
  }

1
如果可能的话,我会建议重用Swing实现。 - aioobe
哦,亲爱的,我无法运行代码,因为没有newStuff()方法。D: - exodrifter
@DDP:嗯,这很奇怪。显然我已经十年没有尝试编译那段代码了...编译后的代码在这里作为一个小程序运行:http://www.astro.wisc.edu/~dolan/java/Constellations.html,所以我提供的源代码可能不是正确的版本。 - Chris Dolan
好的,我会查看你的源代码(其他方面似乎都没问题)。非常感谢你的指引,Chris Dolan :D - exodrifter

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接