我正在屏幕上使用 Java2D 绘制一堆原语,并且出现很多撕裂/闪烁。
如何启用/使用双缓冲,以便将其从屏幕上绘制出来然后显示整个内容?
1)您创建一个 BufferedImage 实例。为了获得最佳性能,您需要确保缓冲图像使用与您要渲染到的屏幕相同的模型。
检查this如何使用传递给任何组件的paint方法的Graphics2D创建一个BufferedImage(有很多方法可以创建缓冲图像,这链接了一些......)
[ http://www.exampledepot.com/egs/java.awt.image/CreateBuf.html][1]
2)您获得与缓冲图像关联的 Graphics [ getGraphics() ],如果需要,将其转换为 Graphics2D,并通过调用该图形对象上的命令将图元渲染到缓冲图像(也可以将该图形对象传递给组件到在缓冲图像上绘制自己)。
3)通过覆盖它的paint方法并在传递给组件的Graphics2D参数上调用drawImage()的变体,您将缓冲图像绘制到您的组件。
lmk 如果您需要示例代码...
查看有关双缓冲的本教程:http://gpwiki.org/index.php/Java:Tutorials: Double_Buffering
作为程序员视图有效使用缓冲的一些技巧
并且一些测试程序是可用的