深入理解Image.createImage()

来源:互联网 发布:自动发微博淘客软件 编辑:程序博客网 时间:2024/05/16 18:30

这个话题给大家深入讲讲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.createImage(...);        Image copy = Image        .createImage(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


原创粉丝点击