【JAVA】用双缓冲技术解决repaint闪烁
2012-10-20 20:22
239 查看
有没有遇到过这样的情况,运行java程序发现窗体闪烁很严重?
我想你大概知道原因:
当使用graphics对象在窗体中绘制多种图像时,每次窗体改变都要调用repaint()函数,相当于把所有图像按顺序重新绘制一次,所以就出现了闪烁现象。
这一点在棋类游戏更加明显(想象一下每次落子都需要重新绘制棋盘上的几十上百个棋子是什么概念)
解决的方法是使用双缓冲技术。也就是说,先将所有图像都绘制在一个缓冲区中,形成一张图片,这样每次调用repaint()只需要将该缓冲图片画到窗体上就可以了。
下面是代码框架:
希望能够帮到你哦~~~
我想你大概知道原因:
当使用graphics对象在窗体中绘制多种图像时,每次窗体改变都要调用repaint()函数,相当于把所有图像按顺序重新绘制一次,所以就出现了闪烁现象。
这一点在棋类游戏更加明显(想象一下每次落子都需要重新绘制棋盘上的几十上百个棋子是什么概念)
解决的方法是使用双缓冲技术。也就是说,先将所有图像都绘制在一个缓冲区中,形成一张图片,这样每次调用repaint()只需要将该缓冲图片画到窗体上就可以了。
下面是代码框架:
public void paint(Graphics g) { BufferedImage bf = new BufferedImage(...); //缓冲图片 Graphics bg = bf.createGraphics(); //缓冲图片的graphics对象 //使用bg对象绘制所有图像,也就是代替原来的g ... ... g.drawImage(bf,...); //只需绘制bf一张即可,不会有闪烁现象 }
希望能够帮到你哦~~~
相关文章推荐
- java-----五子棋小游戏(四)-----解决闪烁问题(双缓冲)
- Java写贪吃蛇游戏,用双缓冲重写update方法解决了闪烁问题,有出现了这个问题……
- MFC中的双缓冲技术(解决绘图闪烁问题)
- 使用双缓冲技术解决动画播放闪烁问题
- java中paint,repaint,update之间的关系(闪烁问题的解决)
- java双缓冲解决屏幕闪烁
- Java Gui中解决游戏闪烁的初级方案(双缓冲技术)
- 双缓冲解决Java绘图严重闪烁
- 基于双缓冲技术解决视图刷新重绘闪烁问题
- BitBlt()双缓冲解决图象闪烁
- 解决Windows 程序界面闪烁问题的一些经验 & 不用双缓冲实现无闪烁图象
- Java 编程技术中汉字问题的分析及解决
- Java 编程技术中汉字问题的分析及解决
- BitBlt()双缓冲解决图象闪烁
- Java中用双缓冲技术消除闪烁
- swing 中重写repaint方法后画图会出现闪烁或者不及时更新的解决方法
- java画图中运用缓冲解决屏幕闪烁方案一
- Java 编程技术中汉字问题的分析及解决
- Java 编程技术中汉字问题的分析及解决
- Windows GDI画图闪烁解决方法 双缓冲技术