怎樣優化J2ME程式當中的paint 函式

2021-04-01 07:49:23 字數 1624 閱讀 5617

林剛

關鍵字:優化

paint j2me,

區域性重新整理,區域性重畫,

我們經常會遇到這樣的問題,在模擬器上跑得很好的程式在實際的手機上卻很慢,甚至執行不了,這大多數是因為重畫機制的使用不當所致,j2me

中的paint()

函式起到了畫螢幕的作用,往往在需要動畫的情況下非常頻繁地需要呼叫,而且在一些低端手機或移動裝置上面,對於

paint()

函式的頻繁呼叫會引起相應時間長甚至無法正常工作等問題。所以,對於

paint()

函式的優化就顯得特別重要。這裡,我們提出幾點優化

paint()

函式的方法和

1.

不要在paint()

函式當中使用耗時的操作,比如:

try

catch(exception ex)

其中的建立的方法由於需要

io操作非常費時,因此要盡量避免,建立操作只在初始化的時候做一遍。

2.

使用畫素較小的,一般來書,顏色種類少的顯示時間就少,因此,盡量避免使用

256色以上的,一些色調豐富,過度緩慢的往往需要

多種畫素來滿足需求,因此,盡量使用**,或者轉換成

256或

16色的,會減少繪圖時間。

3.

區域性重新整理,

每次的重畫

repaint()

都要呼叫

paint(),

而並不是每一次

repaint()

都要重畫整個螢幕,因此有時候之需要重畫部分螢幕即可,這又有兩種

方法可以實現,第一種是利用

clip,clip

是乙個矩形的繪圖區域,當重繪時,僅僅重繪這個區域以內的內容,而不管其他部分,因此可以節省操作,可

以通過setclip()

等函式設定繪圖區域。

另外可以通過

repaint( x,y,width,height )

來重畫指定的某乙個區域,這個函式實際上也是設定了某乙個重繪

clip(),

不過使用起來會更加方便。

4.

減少repaint()

的次數,盡量只在產生作用的時候才重畫。

5.

將paint()

函式的部分內容提到外面來做,使得重畫減少計算量和操作。

6.使用雙快取技術,某些裝置本身就支援雙快取技術,判斷裝置是否支援雙快取可以用canvas類的isdoublebuffered()方法。實現雙快取可以使用image 類的可變影象技術。如,利用:

image = image.createimage( width, height );

graphics g = image.getgraphics();

來建立乙個可變影象,它和canvas一樣都能夠得到graphics繪圖物件的繪製。而且可以不在paint()函式裡面,這一點非常重要。可以在init()中放入 繪圖語句,或者放到乙個單獨的函式中,把繪製到螢幕外緩衝當中,然後在paint()函式中僅僅是把這個image繪製到當前的canvas裡面了,這樣 就可以節省很多計算操作。比如:

public void paint(graphics g)

weblog: blogs.sun.***/lirincy

怎樣優化J2ME程式當中的paint 函式

怎樣優化j2me程式當中的paint 函式 優化 j2me 中的 paint 函式 林剛 關鍵字 優化 paint j2me,區域性重新整理,區域性重畫,我們經常會遇到這樣的問題,在模擬器上跑得很好的程式在實際的手機上卻很慢,甚至執行不了,這大多數是因為重畫機制的使用不當所致,j2 優化j2me中的...

j2me程式優化技巧

1 少用字串連線,多用stringbuffer 2 盡量用固定大小的陣列代替使用vector 3 如果可以不使用新class就能實現功能,就不要增加新的class,因為每個class都有一定的記憶體開銷 4 使用有限的物件導向,因為純粹的oo往往意味著更多的虛方法,更多的層次關係,更多的class ...

怎樣優化j2me程式之中的 paint 函式

我們經常會遇到這樣的問題,在模擬器上跑得很好的程式在實際的手機上卻很慢,甚至執行不了,這大多數是因為重畫機制的使用不當所致,j2me中的paint 函式起到了畫螢幕的作用,往往在需要動畫的情況下非常頻繁地需要呼叫,而且在一些低端手機或移動裝置上面,對於paint 函式的頻繁呼叫會引起相應時間長甚至無...