没有合适的资源?快使用搜索试试~ 我知道了~
J2ME手机开发中得透明图片处理 J2ME手机开发中得透明图片处理
资源推荐
资源详情
资源评论
j2me开发精解:J2ME手机开发中的透明图片
处理
疯狂代码 http://www.CrazyCoder.cn/ ĵ:http:/www.CrazyCoder.cn/Java/Article10944.html
在开发J2ME手机程序的时候,尤其是在开发游戏的时候,透明图片几乎是一种必然的需求,但是在游
戏开发中我们会采用Sprite精灵来做图形元素的绘制,而这些图片素材可能都是来自于资源中的文件,这些文
件如果采用PNG等支持透明设置的格式的话,透明的处理就会被精灵类自动实现,不需要我们特别处理了。如
果遇到一些特殊需求,比如某些图片可能需要通过程序来绘制,或者开发者希望用程序来绘制,那么这时候自
己绘制的图片如何被透明地绘制在Canvas中呢? 透明图片的绘制在J2ME中不是通过Graphics的方法调用完成
的,而是通过将Image图片对象指定成透明图片对象来完成的。在Image中有一个方法叫
createRGBImage(int[] rgb,int width,int height,boolean processAlpha)。这个方法可以创建出一幅具有透明
和半透明效果的图片,当这样的图片被绘制在屏幕上的时候,会自动表现为透明或半透明色。但是这个方法产
生的图片有一个问题,就是这个图片中的像素颜色是不可变的,也就是说这个对象的getGraphics()不能取得
Graphics对象,也就不能通过程序自定义绘制图片。而我们所需要的就是要通过程序来绘制图片并且达到半透
明效果。那么怎么办呢? 我们这样来处理,首先我们通过Image的createImage方法来创建一个可变图片,然
后绘制自定义的图片数据内容。示例程序如下:
int w = 32;
int h = 24;
//创建可变的自定义图片,指定宽度和高度
Image bufImg = Image.createImage(w, h);
Graphics g = bufImage.getGraphics();
g.setColor(0xFFFFFF);
//使用白色绘制背景
g.fillRect(0, 0, w, h);
//绘制需要的图片内容
g.setColor(0xFF0000);
g.fillRect(10, 10, 20, 20);
//绘制图片完成,现在需要取得图片中的数据内容。
//准备一个数组用来存放像素颜色
int [] imgData = new int[w * h];
//取得像素颜色
bufImg.getRGB(imgData, 0, w * h, 0, 0, w, h);
上面程序完成了对自定义图片的像素颜色的提取,在J2ME中的Image是这样规定的,如果这是一个不可变图片
,取得的每一个像素颜色是一个int类型的值,如果其高位是00,也就是颜色为0x00RRGGBB的时候,这个像
素就是完全透明的,如果是0xAARRGGBB,其中AA表示透明度,这样的颜色表示半透明,现在我们取得了自
资源评论
jacksong2002
- 粉丝: 2
- 资源: 1
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功