<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    冰浪

    哥已不再年輕 - 堅定夢想,畢生追求!
    posts - 85, comments - 90, trackbacks - 0, articles - 3
      BlogJava :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理

    優(yōu)化J2ME中的paint()函數(shù)

    Posted on 2009-04-09 09:33 冰浪 閱讀(171) 評論(0)  編輯  收藏 所屬分類: J2ME
    我們經(jīng)常會遇到這樣的問題,在模擬器上跑得很好的程序在實際的手機上卻很慢,甚至運行不了,這大多數(shù)是因為重畫機制的使用不當所致,J2ME中的paint()函數(shù)起到了畫屏幕的作用,往往在需要動畫的情況下非常頻繁地需要調(diào)用,而且在一些低端手機或移動設備上面,對于paint()函數(shù)的頻繁調(diào)用會引起相應時間長甚至無法正常工作等問題。所以,對于paint()函數(shù)的優(yōu)化就顯得特別重要。這里,我們提出幾點優(yōu)化paint()函數(shù)的方法和注意事項,在編程中大家可以參考:

    1.不要在paint()函數(shù)當中使用耗時的操作,比如:

    try{

    Image image_Splash = Image.createImage("/back.png");

    g.drawImage(image_Splash, 0, 0,Graphics.TOP | Graphics.LEFT);

    }

    catch(Exception ex) {

    }

    其中的創(chuàng)建圖片的方法由于需要IO操作非常費時,因此要盡量避免,創(chuàng)建操作只在初始化的時候做一遍。

    2.使用像素較小的圖片,一般來書,顏色種類少的圖片顯示時間就少,因此,盡量避免使用256色以上的圖片,一些色調(diào)豐富,過度緩慢的圖片往往需要 多種像素來滿足需求,因此,盡量使用卡通圖片,或者轉(zhuǎn)換成256或16色的圖片,會減少繪圖時間。

    3.局部刷新, 每次的重畫repaint()都要調(diào)用paint(),而并不是每一次repaint()都要重畫整個屏幕,因此有時候之需要重畫部分屏幕即可,這又有兩種方法可以實現(xiàn),第一種是利用Clip,Clip是一個矩形的繪圖區(qū)域,當重繪時,僅僅重繪這個區(qū)域以內(nèi)的內(nèi)容,而不管其他部分,因此可以節(jié)省操作,可 以通過setClip()等函數(shù)設定繪圖區(qū)域。

    另外可以通過repaint( x,y,width,height )來重畫指定的某一個區(qū)域,這個函數(shù)實際上也是設定了某一個重繪Clip(),不過使用起來會更加方便。

    4.減少repaint()的次數(shù),盡量只在產(chǎn)生作用的時候才重畫。

    5.將paint()函數(shù)的部分內(nèi)容提到外面來做,使得重畫減少計算量和操作。

    6.使用雙緩存技術,某些設備本身就支持雙緩存技術,判斷設備是否支持雙緩存可以用Canvas類的isDoubleBuffered()方法。實現(xiàn)雙緩存可以使用Image 類的可變圖像技術。如,利用:
    image = Image.createImage( width, height );
    Graphics g = image.getGraphics();
    來建立一個可變圖像,它和Canvas一樣都能夠得到Graphics繪圖對象的繪制。而且可以不在paint()函數(shù)里面,這一點非常重要??梢栽趇nit()中放入繪圖語句,或者放到一個單獨的函數(shù)中,把圖片繪制到屏幕外緩沖當中,然后在paint()函數(shù)中僅僅是把這個Image繪制到當前的Canvas里面了,這樣就可以節(jié)省很多計算操作。比如:
    public void paint(Graphics g){
        g.translate(x - g.getTranslateX(), y - g.getTranslateY());//設置當前坐標系統(tǒng)
        g.drawImage(image,0,0,g.TOP|g.LEFT);
        g.translate(x - g.getTranslateX(), y - g.getTranslateY());//改回原來的坐標系統(tǒng)
    }
    (轉(zhuǎn)于http://azi.javaeye.com/blog/194475)
    主站蜘蛛池模板: 色天使色婷婷在线影院亚洲| 精品国产污污免费网站入口在线 | 视频免费在线观看| 国产极品粉嫩泬免费观看| 亚洲天堂免费在线| 亚洲精品国产精品乱码不卞| 久久久精品免费国产四虎| 亚洲欧美日韩综合久久久久| 亚洲精品成人无码中文毛片不卡| 国产va免费精品| 在线观看亚洲精品福利片| 你懂的在线免费观看| 自拍日韩亚洲一区在线| 亚洲人成网7777777国产| 日韩视频在线观看免费| 亚洲AV无码XXX麻豆艾秋| 久久精品亚洲综合| 深夜国产福利99亚洲视频| 啦啦啦完整版免费视频在线观看| 日本在线观看免费高清| 亚洲精品国产字幕久久不卡| 成人免费午间影院在线观看| 成人毛片100免费观看| 蜜芽亚洲av无码精品色午夜| 四虎免费久久影院| 国产午夜精品免费一区二区三区| 亚洲无人区码一二三码区别图片| 国产午夜影视大全免费观看| 啦啦啦完整版免费视频在线观看| a免费毛片在线播放| 亚洲精品乱码久久久久蜜桃| 久久久久亚洲AV成人无码| 毛片免费在线播放| 91精品国产免费| 成人片黄网站色大片免费观看APP| 朝桐光亚洲专区在线中文字幕| 亚洲国产综合人成综合网站00| 亚洲国产精品VA在线看黑人| 国产三级在线观看免费| 4hu四虎免费影院www| www亚洲精品久久久乳|