深入理解Image.createImage()

gudesheng發表於2008-01-03

這個話題給大家深入講講Image.createImage(width,height);

我始終認為:深入的理解一種機制,然後才有靈活多變的應用!如果你不能深入的理解它,那麼也只會死板的套用,如果你想做個copy程式碼的程式設計師,那麼就沒必要看我的文章。

Image.createImage(width,height);這個方法到底是做什麼用的?

我們先看下doc裡的一段說明:

An immutable image may be created from a mutable image through the use of the createImage method. It is possible to create a mutable copy of an immutable image using a technique similar to the following:

    Image source; // the image to be copied        source = Image.(...);        Image copy = Image        .(source.getWidth(), source.getHeight());            Graphics g = copy.getGraphics();        g.drawImage(source, 0, 0, TOP|LEFT);       

這句話的意思是:通過Image.createImage(width,height);可以得到一份圖片的copy。

也就是說:我們可以把某個圖片快取在記憶體中,然後隨時可以把它調出來用。

好,理解了這點,下面的就好辦!

一:既然這個方法快取圖片的一份copy,那麼我們就可以利用它來快取我們的圖片,然後在需要的時候把它重新整理的手機螢幕上(也就是g.drawImage()把它畫到螢幕上),從而使這個方法可用於雙緩衝技術。

當然,這個功能是我們常用的,我這裡就不羅嗦了!

我要將的是下面的一個應用!

二:利用Image.createImage(windth,height)來繪製背景。

可能大家看到這個標題都很詫異,我們常用繪製背景的方法是剪貼(setClip())。

下面我來演示怎麼用這個方法繪製背景title。

首先,我們計算需要用的title圖片塊,也就是拼湊大地圖的小圖片塊。

然後,我們在記憶體中把這些小圖片塊按照陣列索引號快取在記憶體中。

最後,繪製地圖的時候我們再把這些小圖片塊取出來。

結果就是,因為我們把這些小圖片塊快取在記憶體塊中,所以取出來的時候更快。

下面是演示程式碼:

Image img[] = new Image[4];

for(int i = 0;i < 4;i++)

 img[i] = Image.createImage(width,height);

int[][] mapTitle = { 1,1,1,1,1,1,1,1,

                                 2,3,1,0,3,2,2,2

.........

}

最後通過索引把圖片取出來畫到螢幕上就OK了。



Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=640337