有一低级问题,望各位高手指教。
双缓冲技术不能直接适用于CANVAS中吗?
在一APPLET中有一个CANVAS类,我想在CANVAS的PAINT()中实现双缓冲,但是不行。
部分代码class  Cb extends Canvas{  public void paint(Graphics g){
    
    Graphics ggg=img.getGraphics();          //如果我直接使用,就不能显示出图象了
    ggg.drawImage(m,0,0,500,500,this );
    g.drawImage(img ,Example.x1,Example.y1,5000,5000,this);      }
  
  Cb(){
    getSize();
    m=Example.img;  
    img=Example.img2;          //要加上这句才行,Example.img2为主类中的一个可修改图象类 
                               //主类中 img2=createImage(500,500);
  }}
难道必须要在主类中创建了一个可修改图象,然后再传进来才能用吗?为什么呢?

解决方案 »

  1.   

    你先在内存中创建图形,吧图形画好,最后在画到CANVAS,这就是双缓冲,
      

  2.   

    代码不全。但是意思是对得。双缓冲得做法基本是先创建一个可变得image然后在image上画东西。最后在paint里画这个image。
      

  3.   

    我是想问为什么我在这个“Cb”类中直接定义一个可变的image不能画出来,必须要在主类里定义了一个可变的image再传进“Cb”类才能使用?
    class  Cb extends Canvas{
      public void paint(Graphics g){   
        Graphics ggg=img.getGraphics();          //如果我直接使用,就不能显示出图象了
        ggg.drawImage(m,0,0,500,500,this );
        g.drawImage(img ,Example.x1,Example.y1,5000,5000,this);    
      }
      Cb(){
        getSize();
        m=Example.img;             //Example为主类,Example.img为从文件中读取的一个图象  
     
       img=Example.img2;          //要加上这句才行,Example.img2为主类中的一个可修改图象类 
                                  //主类中 img2=createImage(500,500);
      }
    }
    代码中的  img=Example.img2,Example.img2为主类中的可修改image; 这句如果我直接用img=createImage(x,y)就不行。
      

  4.   

    class  Cb extends Canvas{
      public Image img=null;
      public void paint(Graphics g){   
        Graphics ggg=img.getGraphics();          
        ggg.drawImage(m,0,0,500,500,this );
        g.drawImage(img ,Example.x1,Example.y1,5000,5000,this);    
      }
      Cb(){
        getSize();
        m=Example.img;              
     
       img=Image.createIamge(x,y);          
      }
    }
      

  5.   

    Image.createIamge(x,y)?
    我怎么调不出来这个方法呢?
    我觉得会不会是Applet中只有主类才能操作后台,其他的类不行?