我的代码的一部分是这种绘制方法:
public void paint(Graphics g) {
super.paint(g);
refreshSize();
paintSquares(g);
if (drawGrid) {
drawGrid(g);
}
}
如何使用缓冲区来阻止它闪烁?
答案 0 :(得分:0)
您可以通过使用空实现覆盖更新(Graphics g)方法来减少闪烁(更新的默认实现呈现背景)。如果这样做,您必须确保绘制组件的整个区域。
(注意:覆盖更新只对框架有帮助 - 其他组件仍会闪烁,因为包含框架)
那就是说,帮自己一个忙,然后转向Swing。
编辑:挖掘一下,后台渲染发生在java.awt.Container的update()实现中(Frame是Container ofc的子类)。结合backbuffer渲染(您需要自己处理,例如BufferedImage),您可以使用AWT自动提供的内容。