解决绘图时出现屏幕闪耀的问题:
在使用Canvas类的子类绘制图像时,经常会出现屏幕闪耀的问题,为此首先应该了解出现屏幕闪耀的原因,然后根据原因解决屏幕闪耀问题。 1.原因: 每次重绘画布对象时,改变了画布对象的大小或调用了repaint()方法,程序都会调用update()方法,调用update()方法时程序首先清除画布上原有内容,然后再调用paint()方法重新绘制图像,这样就出现了屏幕闪耀问题。 2.解决问题的方法: 在Canvas类的子类中重写update()方法,并在update()方法中调用paint()方法,使调用update()方法时不清除画布上原有的内容,而是直接调用paint()方法绘制图像,这样就不会出现屏幕闪耀了。 import java.awt.Canvas; import java.awt.Graphics; import java.awt.Image; /** * @author zhang zhen kun * 创建画布类 */ public class DrawPictureCanvas extends Canvas { private Image image=null; // 定义Image对象的引用 public DrawPictureCanvas(Image image){ super(); this.image=image; // 为成员变量赋值 } public void setImage(){ this.image=image; // 为成员变量赋值 } /* * 重写paint()方法,在画布上绘制图像 */ public void paint(Graphics g){ g.drawImage(image, 0,0,null); // 在画布上绘制图像 } /* * 重写update()方法,这样可以解决屏幕闪耀的问题 */ public void update(Graphics g){ paint(g); // 调用paint方法 } } |