(1) canvas的paint方法何时调用 a) display.setCurrent()时 b) canvas.repaint()时 c) 此外,paint不会自动调用 d) Repaint是建议性的,可以在rapaint()后使用serviceRepaint()方法强制刷新 e) 可以使用repaint(x,y,width,height)来重画指定的某一个区域 f) 应该尽量减少repaint()的次数 (2) 正确使用paint的几点方法,总结如下: a) 不要在paint函数中使用耗时的操作,比如Image.createImage b) 使用象数比较小的图片,一般来说颜色种类少的图片显示时间少,尽量避免使用 (3) 局部刷新 a) 使用Clip,通过setClip等函数设定绘图区域 b) 使用repaint(x,y,width,height) (4) 减少repaint次数 (5) Paint的部分内容提到外部来做,减少计算量和操作 (6) 使用双缓存 a) 某些设备本身支持该属性,可用canvas.isDoubleBufferd()方法来实现 b) 可以使用image类的可变图形技术实现双缓存,例如image= Image.createImage(width,height); Graphics g= image.getGraphics(),可以不在paint函数里面这一点非常重要。所以可以在init()放入绘图语句,或者放到一个单独的函数中,把图片绘制到屏幕外缓冲中,然后在piant函数中仅仅把这个Image绘制到当前Canvas里面,这样可以节省很多计算操作。例如: public void paint(Graphics g){ //设置当前坐标系统 g.translate(x - g.getTranslateX(), y - g.getTranslateY()); g.drawImage(image,0,0,g.TOPg.LEFT); //改回原来的坐标系统 g.translate(x - g.getTranslateX(), y - g.getTranslateY()); }
|
|