轮胎拆装机教学视频:swing消除闪烁

来源:百度文库 编辑:偶看新闻 时间:2024/05/03 06:17:54
  1. public void paint(Graphics g) {    
  2.         // 在重绘函数中实现双缓冲机制   
  3.         offScreenImage = this.createImage(WIDTH, HEIGHT);    
  4.         // 获得截取图片的画布   
  5.         gImage = offScreenImage.getGraphics();    
  6.         // 获取画布的底色并且使用这种颜色填充画布,如果没有填充效果的画,则会出现拖动的效果   
  7.         gImage.setColor(gImage.getColor());    
  8.         gImage.fillRect(0, 0, WIDTH, HEIGHT); // 有清楚上一步图像的功能,相当于gImage.clearRect(0, 0, WIDTH, HEIGHT)   
  9.    
  10.         // 调用父类的重绘方法,传入的是截取图片上的画布,防止再从最底层来重绘   
  11.         super.paint(gImage);    
  12.    
  13.         // 当游戏没有结束的时候绘出对战双方   
  14.         if (!getGameOver()) {    
  15.             // 画出自己的坦克   
  16.             paintMyTank(gImage);    
  17.             // 画出自己坦克发射的子弹   
  18.             paintMyBullet(gImage);    
  19.             // 画出敌方坦克   
  20.             paintEnemyTank(gImage);    
  21.             // 画出敌方坦克发射的子弹   
  22.             paintEnemyBullet(gImage);    
  23.         }    
  24.    
  25.         // 画出草地   
  26.         paintGrass(gImage);    
  27.         // 画出小河   
  28.         paintRiver(gImage);    
  29.         // 画出石头   
  30.         paintStone(gImage);    
  31.         // 画出各种道具   
  32.         paintTool(gImage);    
  33.    
  34.         // 将接下来的图片加载到窗体画布上去,才能考到每次画的效果   
  35.         g.drawImage(offScreenImage, 0, 0, null);    
  36.     }  

 


 这篇文章的这段代码,可以实现JFrame的双缓冲。而且,必须在定义完gimage时,就去调用super.paint(image),而不能是在gimage.setColor之后,否则的话就会导致背景的颜色没法显示。