BBS水木清华站∶精华区
发信人: KHP (人之初), 信区: Java
标 题: Re: 如何使画面不闪烁?
发信站: BBS 水木清华站 (Mon Aug 2 11:57:07 1999)
每次 repaint 都创建一次,这样太浪费了吧。
可以这样,增加两个成员变量 Image offImg, Graphics offG,改写 addNotify,
paint 和 update 如下:
public void paint(Graphics g) {
offG.drawLine(...);
offG.drawImage(...);
...
...
offG.drawString(...); /* 意思就是要在 g 上画的东西先画在 offG 上 */
g.drawImage(offImg, 0, 0, this);
}
public void update(Graphics g) {
paint(g);
}
public void addNotify() {
super.addNotify();
offImg = createImage(size().width, size().height);
offG = offImg.getGraphics();
}
这样可以有效地防止画面的闪烁。
【 在 Uet (LR) 的大作中提到: 】
∶ 建议使用双缓冲技术,将update(Graphics g)改为
∶ update(Graphics g){
∶ Image img = creatImage(...);
∶ Graphics ig = img.getGraphics();
∶ paint(ig);
∶ g.drawImage(..,img...);
∶ }
∶ paint(Graphics g){
∶ ....//不用动
∶ }
∶ 具体参数记不请了。原理就是:先将图画画到一个隐藏虚拟画面上,然后在将这个画面
∶ 一把仍到显示面版上。
--
※ 来源:·BBS 水木清华站 bbs.net.tsinghua.edu.cn·[FROM: 210.78.130.130]
BBS水木清华站∶精华区