首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2SE开发 >

哪位高手有解决Canvas闪烁的经验

2013-11-18 
谁有解决Canvas闪烁的经验?各位是不是大多采用Swing,不过偶还是熟悉AWT:public class MyCanvas extends Ca

谁有解决Canvas闪烁的经验?
各位是不是大多采用Swing,不过偶还是熟悉AWT:

public class MyCanvas extends Canvas implements Observer,MouseListener

为了解决闪烁问题,paint方法是这样的:

public void paint(Graphics h)
   {Rectangle r=getBounds(); 
    Image db=createImage(r.width,r.height);
    Graphics g=db.getGraphics();
    
    //通过g来画
    g.setColor(Color.green.darker().darker()); 
    g.fillRect(0,0,r.width,r.height);

    h.drawImage(db,0,0,this); 
   }

还有:  public void update(Graphics g) {paint(g);}

偶的程序中就是这样编的,但有时还是有闪烁
偶只剩最后一招了:在update方法中改成repaint(x,y,width,height) 
但这样会增加程序的复杂度
偶发现把mouseClicked方法中的代码移到mousePressed方法后
闪烁有所减少,但也没有完全消除

这是不是JVM的问题?





[解决办法]
建议采用双缓冲技术。去网上查找。
[解决办法]
http://www.iteye.com/topic/624169
[解决办法]
其实 闪烁就是 因为先画了一遍底色引起的

 g.setColor(Color.green.darker().darker()); 
    g.fillRect(0,0,r.width,r.height);
所以要么就用image直接覆盖掉上次的内容

要么就只能用双缓存,不要让画底色的行为直接显示出来。

热点排行