当前位置:七道奇文章资讯编程技术Java编程
日期:2011-01-26 02:54:00  来源:本站整理

<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;
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表示透明度,这样的颜色表示半透明,目前我们获得了自定义的可变图片的像素颜色值,接下来,我们需求成立不可变图片,并且要把白色的后台设置为完好透明的.

 //将获得的保存在数组中的后台颜色的高位值设置为00
for(int i=0; i<imgData.length; i++) {
if(imgData[i] & 0x00FFFFFF == 0x00FFFFFF) {
imgData[i] = imgData[i] & 0x00FFFFFF;
}
}

//成立不可变透明图片, 此中最后一个参数表示透明.
Image immutableImg = Image.createRGBImage(imgData, w, h, true);

    好了,到这里一个透明图片成立出来了,这个图片被绘制到Canvas上将会是一幅后台完好透明的图片.其实这样我们可以对这个功效封装一个办法,代码以下:
 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编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
  • <b>hosts是什么 hosts文件在什么位置 若何改正hosts</b>
  • <b>在 Windows 8 中手动安装语言包</b>
  • <b>五个常见 PHP数据库问题</b>
  • Windows中Alt键的12个高效快速的利用本领介绍
  • <b>MySQL ORDER BY 的实现解析</b>
  • <b>详解MySQL存储历程参数有三种范例(in、out、inout)</b>
  • <b>Win8系统恢复出来经典的开始菜单的办法</b>
  • <b>Win8系统花屏怎么办 Win8系统花屏的办理办法</b>
  • <b>Windows 7系统下无线网卡安装</b>
  • <b>为什么 Linux不需求碎片整理</b>
  • <b>Windows 8中删除账户的几种办法(图)</b>
  • <b>教你如安在win7下配置路由器</b>
  • 本文地址: 与您的QQ/BBS好友分享!
    • 好的评价 如果您觉得此文章好,就请您
        0%(0)
    • 差的评价 如果您觉得此文章差,就请您
        0%(0)

    文章评论评论内容只代表网友观点,与本站立场无关!

       评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论
    Copyright © 2020-2022 www.xiamiku.com. All Rights Reserved .