<b>J2ME手机开辟中的透明图片处理</b>[Java编程]
本文“<b>J2ME手机开辟中的透明图片处理</b>[Java编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:
在开辟J2ME手机程序的时刻,特别是在开辟游戏的时刻,透明图片几近是一种必定的需求,但是在游戏开辟中我们会采取Sprite精灵来做图形元素的绘制,而这些图片素材大概都是来自于资源中的文件,这些文件假如采取PNG等支持透明设置的格局的话,透明的处理就会被精灵类自动实现,不需求我们分外处理了.假如碰到一些特别需求,比方某些图片大概需求通历程序来绘制,大概开辟者但愿用程序来绘制,那么这时刻自己绘制的图片若何被透明地绘制在Canvas中呢?
透明图片的绘制在J2ME中不是通过Graphics的办法调用完成的,而是通过将Image图片对象指定成透明图片对象来完成的.在Image中有一个办法叫createRGBImage(int[] rgb,int width,int height,boolean processAlpha).这个办法可以成立出一幅具有透明和半透明效果的图片,当这样的图片被绘制在屏幕上的时刻,会自动表现为透明或半透明色.但是这个办法产生的图片有一个问题,就是这个图片中的像素颜色是不可变的,也就是说这个对象的getGraphics()不能获得Graphics对象,也就不能通历程序自定义绘制图片.而我们所需求的就是要通历程序来绘制图片并且到达半透明效果.那么怎么办呢?
我们这样来处理,首先我们通过Image的createImage办法来成立一个可变图片,然后绘制自定义的图片数据内容.示例程序以下:
int w = 32; //绘制图片完成,目前需求获得图片中的数据内容. |
//将获得的保存在数组中的后台颜色的高位值设置为00 //成立不可变透明图片, 此中最后一个参数表示透明. |
createAlphaImage(Image img, int alphaColor) { int w = img.getWidth(); int h = img.getHeight(); int [] imgData = new int[w * h]; img.getRGB(imgData, 0, w * h, 0, 0, w, h); for(int i=0; i<imgData.length; i++) { if(imgData[i] & alphaColor == alphaColor) { imgData[i] = imgData[i] & alphaColor; } } |
办法参数阐明以下:
img-是不透明的原图片
alphaColor-是需求设为透明的像素颜色,格局为0x00RRGGBB.
以上是“<b>J2ME手机开辟中的透明图片处理</b>[Java编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
本文地址: | 与您的QQ/BBS好友分享! |