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

深入理解Image.createImage()相关推荐

  1. android fence深入理解

    为何需要fence     fence如何使用     软件实现的opengl     硬件实现的opengl         上层使用canvas绘图         上层使用opengl绘图    ...

  2. 通用解题法——回溯算法(理解+练习)

    积累算法经验,积累解题方法--回溯算法,你必须要掌握的解题方法! 什么是回溯算法呢? 回溯算法实际上一个类似枚举的搜索尝试过程,主要是在搜索尝试过程中寻找问题的解,当发现已不满足求解条件时,就&quo ...

  3. stream流对象的理解及使用

    我的理解:用stream流式处理数据,将数据用一个一个方法去 . (点,即调用) 得到新的数据结果,可以一步达成. 有多种方式生成 Stream Source: 从 Collection 和数组 Co ...

  4. Linux shell 学习笔记(11)— 理解输入和输出(标准输入、输出、错误以及临时重定向和永久重定向)

    1. 理解输入和输出 1.1 标准文件描述符 Linux 系统将每个对象当作文件处理.这包括输入和输出进程.Linux 用文件描述符(file descriptor)来标识每个文件对象.文件描述符是一 ...

  5. java局部变量全局变量,实例变量的理解

    java局部变量全局变量,实例变量的理解 局部变量 可以理解为写在方法中的变量. public class Variable {//类变量static String name = "小明&q ...

  6. 智能文档理解:通用文档预训练模型

    预训练模型到底是什么,它是如何被应用在产品里,未来又有哪些机会和挑战? 预训练模型把迁移学习很好地用起来了,让我们感到眼前一亮.这和小孩子读书一样,一开始语文.数学.化学都学,读书.网上游戏等,在脑子 ...

  7. 熵,交叉熵,散度理解较为清晰

    20210511 https://blog.csdn.net/qq_35455503/article/details/105714287 交叉熵和散度 自己给自己编码肯定是最小的 其他的编码都会比这个 ...

  8. mapreduce理解_大数据

    map:对不同的数据进行同种操作 reduce:按keys 把数据规约到一起 看这篇文章请出去跑两圈,然后泡一壶茶,边喝茶,边看,看完你就对hadoop 与MapReduce的整体有所了解了. [前言 ...

  9. 文件句柄和文件描述符的区别和理解指针

    句柄是Windows用来标识被应用程序所建立或使用的对象的唯一整数,Windows使用各种各样的句柄标识诸如应用程序实例,窗口,控制,位图,GDI对象等等.Windows句柄有点象C语言中的文件句柄. ...

最新文章

  1. miui 8 android对应关系,小米回应MIUI版本和安卓版本没有对应关系 你怎么看
  2. 如何写好和创作经济学论文?
  3. Laravel源码解析之ENV配置
  4. 多个div中的label标签对齐
  5. js ajax通用方法,目前5个流行的AJAX调用JavaScript库
  6. 城市轨道交通运营管理属于什么院系_青西新区高职校城市轨道交通运营与管理专业礼仪教学成果考核圆满结束...
  7. mysql数据库任务计划_MySQL计划任务(事件调度器) Event Scheduler介绍
  8. 从hive上下载文件
  9. vivoX30是android5的吗,深度剖析揭秘opporeno5质量和vivox30区别是?选哪个更好?独家揭秘报道...
  10. android 自动翻页插件,网页自动翻页Chrome插件下载
  11. tensorflow:tensorflow进阶
  12. 安卓Socket与pc端c#服务器的通信 附完整代码
  13. 【翻译】Wide Deep Learning for Recommender Systems--推荐系统的广泛深度学习
  14. win10安装openssl
  15. 「nature protocols」组学数据的通路富集分析和可视化: g:Profiler, GSEA, Cytoscape 和 EnrichmentMap...
  16. 快手只发作品不直播的赚钱方法
  17. 不用加减乘除符号的情况下实现加法运算(js代码)
  18. 我是一只IT小小鸟读后感 Part 1
  19. 开机报错0190: critical low-battery error的解决方案
  20. 基于Matlab/simulink的VSG虚拟同步机控制

热门文章

  1. Vue修改网页浏览器标签的标题和图标
  2. shopee商家入驻需要什么条件?注册虾皮shopee网店其实非常简单
  3. Visual Studio 2010/2008(MSDN原版下载)
  4. 生存曲线 p值 python_超详细讲解生信SCI中的生存曲线作图,不看后悔系列
  5. 02_SHELL编程之变量定义
  6. Windows平台OpenGL渲染视频
  7. 20_外星人游戏项目03——
  8. 《DNS与BIND(第5版)》——10.4 增量区域传输(IXFR)
  9. maven-springmvc工程
  10. 网易云音视频多人通话webRTC的实现(接)。