AWT的双缓冲技术
来源:互联网 发布:国安大数据 编辑:程序博客网 时间:2024/06/05 01:54
学了AWT,学到双缓冲技术,于是照着书将双缓存技术的代码给实现了。
另外插一句,swing组件的JComponent组件默认缓冲区,不必自己写代码。如果想关闭双缓冲区,可以在组件上施加setDoubleBuffered(false)
import java.awt.*;import java.awt.event.*;/* * 双缓存技术 * 可以将绘制的内容保留在一个Image对象中,如果需要重新显示绘制的内容,仅仅简单地将这个Image内容再现就可以了。 * (1)img起到缓存的作用,og在其上进行绘制 * (2)createImage必须在MyCanvas显示后才能调用,所以mc.init()放在f.setVisible(true)后 * (3)当窗口缩小,移动等情况发生后,只针对img进行绘制操作,不再对每个细节进行绘制 */class MyCanvas extends Canvas{private Image img;private Graphics og;public void init(){Dimension d=getSize();img=createImage(d.width,d.height);og=img.getGraphics();og.setColor(Color.blue);og.fillRect(30, 30, 60, 60);og.setColor(Color.yellow);og.fillOval(15,15,30,30);og.setXORMode(Color.red);og.fillOval(75, 75, 30, 30);og.setPaintMode();og.setColor(Color.green);og.fillArc(150, 40, 60, 60, 30, 160);}public void paint(Graphics g){if(img!=null){g.drawImage(img, 20, 20, this);}}}public class DoubleBufferDemo {public static void main(String args[]){Frame f=new Frame("DoubleBufferDemo");f.setBounds(100,100,250,200);MyCanvas mc=new MyCanvas();f.add(mc);f.setVisible(true);mc.init();mc.repaint();f.addWindowListener(new WindowAdapter(){public void windowClosing(WindowEvent e){System.exit(0);}});}}实现效果如下图。
0 0
- AWT的双缓冲技术
- 消除闪屏的双缓冲技术在AWT和Swing中的实现
- AWT 双缓冲
- Java GUI:AWT、Swing、UI绘制、双缓冲技术
- java的双缓冲技术
- 双缓冲原理在awt及swing上的应用及消除闪烁
- 双缓冲原理在awt和swing中实现消除闪烁的方法
- 双缓冲技术的简单使用
- C#: GDI+双缓冲技术的使用
- 对双缓冲技术的一点理解!
- win32双缓冲技术的实现
- win32下的双缓冲绘图技术
- Android中 view的双缓冲技术
- Android中 view的双缓冲技术
- win32下的双缓冲绘图技术
- 双缓冲技术
- 双缓冲技术
- gdi+ 双缓冲技术
- 存储过程语法及实例
- 安卓项目搭建以及实际开发经验
- 增加duilib edit控件的提示功能和多种文字颜色
- QT Demo 之 window(4) ScreenInfo
- 省去 ListView 滚动条 显示全部内容
- AWT的双缓冲技术
- 在一本书上摘录的Eclipse的中文配置教程>>希望能帮助到有需要的人
- 2014-12-01:NaN+跳出多重循环
- MATLAB数据处理快速学习教程
- Humble Numbers
- 2014-12-02:组合与继承
- Review of codeforces 492C Vanya and Computer Game based on Python
- ubuntu下的PyQt4开发环境配置
- 阅读 对数组排序处理