谁有解决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直接覆盖掉上次的内容
要么就只能用双缓存,不要让画底色的行为直接显示出来。