分享

Canvas的paint方法

 最初九月雪 2013-05-27

(1)       canvaspaint方法何时调用

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)        使用repaintx,y,width,height

(4)       减少repaint次数

(5)       Paint的部分内容提到外部来做,减少计算量和操作

(6)       使用双缓存

a)         某些设备本身支持该属性,可用canvas.isDoubleBufferd()方法来实现

b)        可以使用image类的可变图形技术实现双缓存,例如image= Image.createImagewidth,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());

    }

 

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多