深入理解Image.createImage()
這個話題給大家深入講講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.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
相關文章
- 深入理解Isolate
- 深入理解HashMapHashMap
- 深入理解TransformORM
- 深入理解KVO
- 深入理解 JVMJVM
- 深入理解 GitGit
- 深入理解AQSAQS
- 深入理解JVMJVM
- 深入理解 TypeScriptTypeScript
- 深入理解JavaScriptCoreJavaScript
- 深入理解MVCMVC
- 深入理解 PWA
- 深入理解margin
- 深入理解ReactReact
- 深入理解BFC
- 深入理解reduxRedux
- BFC深入理解
- 深入理解 GCDGC
- 深入理解 requestAnimationFramerequestAnimationFrame
- 深入理解Eureka
- 深入理解copy
- AsyncTask深入理解
- 深入理解RunLoopOOP
- 深入理解Fsync
- 深入理解yield
- 深入理解MySQL索引MySql索引
- 深入理解ThreadLocalthread
- 深入理解JVM——物件JVM物件
- 對redis深入理解Redis
- 深入理解 ceph mgr
- 深入理解JavaScript原型JavaScript原型
- 深入理解 Event LoopOOP
- 深入理解Java PriorityQueueJava
- 深入理解vue元件Vue元件
- 深入理解 Java 方法Java
- 深入理解es module
- 深入理解 ReentrantLockReentrantLock
- 深入理解代理模式模式