这个话题给大家深入讲讲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了。