Swing双缓冲机制

 

    public void paint(Graphics g) {    
            // 在重绘函数中实现双缓冲机制   
            offScreenImage = this.createImage(WIDTH, HEIGHT);    
            // 获得截取图片的画布   
            gImage = offScreenImage.getGraphics();    
            // 获取画布的底色并且使用这种颜色填充画布,如果没有填充效果的画,则会出现拖动的效果   
            gImage.setColor(gImage.getColor());    
            gImage.fillRect(0, 0, WIDTH, HEIGHT); // 有清楚上一步图像的功能,相当于gImage.clearRect(0, 0, WIDTH, HEIGHT)   
       
            // 调用父类的重绘方法,传入的是截取图片上的画布,防止再从最底层来重绘   
            super.paint(gImage);    
       
            // 当游戏没有结束的时候绘出对战双方   
            if (!getGameOver()) {    
                // 画出自己的坦克   
                paintMyTank(gImage);    
                // 画出自己坦克发射的子弹   
                paintMyBullet(gImage);    
                // 画出敌方坦克   
                paintEnemyTank(gImage);    
                // 画出敌方坦克发射的子弹   
                paintEnemyBullet(gImage);    
            }    
       
            // 画出草地   
            paintGrass(gImage);    
            // 画出小河   
            paintRiver(gImage);    
            // 画出石头   
            paintStone(gImage);    
            // 画出各种道具   
            paintTool(gImage);    
       
            // 将接下来的图片加载到窗体画布上去,才能考到每次画的效果   
            g.drawImage(offScreenImage, 0, 0, null);    
        }   

 


 
这篇文章的这段代码,可以实现JFrame
的双缓冲。而且,必须在定义完gimage时,就去调用super.paint(image),而不能是在gimage.setColor之后,否则的话就会导致背景的颜色没法显示。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值