图像的透明处理!

原创 2005年05月26日 00:58:00

MIDP 1.0中要创建可变图片只有一种方法:
Image img = Image.createImage(100, 100); // create a 100x100 image
很遗憾,它生成的图片充满了不透明的白色象素-无法创建一开始就透明的可变图片。因为之后无法使象素透明,你就不能用这种方法创建具有透明性的图片。特别要强调的是:你不能用它为某个透明子图创建透明的可变副本。
Graphics g = img.getGraphics(); g.drawImage(spriteImg, 0, 0, Graphics.TOP | Graphics.LEFT);
因为,无论子图是否透明,其派生的图片都填充着不透明的白色。
用诺基亚Java用户界面API,你就可以创建可变图片,并将其初始化为任何颜色,包括透明色:
Image img = DirectUtils.createImage(100, 100, 0x00000000);
这里的颜色“0x00000000”不是RGB而是“ARGB” 这个至关重要的字节详细规定了“alpha”值:0xFFrrggbb表示不透明,0x00rrggbb表示透明(在这种情况下,rrggbb值没有意义)。可以把“alpha”理解为不透明性(与透明性相反)。需要注意的是:移动电话有可能并不支持alpha混合(即半透明线条和图片与背景的混合)。在这种情况下,大于0alpha值被认为是不透明的。
你也能用GraphicsDirectGraphics方法绘制透明子图,如果你想节省MIDlet JAR文件的空间,你可以把所有的子图合并成一个大图,这种方法是非常实用的(这样,单位文件的系统开销就只有一次了)。
这里,你由一个图片文件(图5中上部图片)创建一个大图片,然后使用DirectGraphics为每个子图创建透明小图片,并以适当的x-y-偏移量,通过drawImage方法分别在每个透明小图片(图5中下面的图片)上面绘制大图片的相应部分。源代码如下(注意每个图片是12x12象素):
Image fivemen = Image.createImage("/fivemen.png"); Image man[] = new Image[5]; for (int i = 0; i < 5; ++i) { man[i] = DirectUtils.createImage(12, 12, 0x00000000); Graphics g = man[i].getGraphics(); g.drawImage(fivemen, -12 * i, 0, Graphics.TOP | Graphics.LEFT); }
(该代码在MIDP1.0中不起作用,因为各个小图片都被初始化为不透明的白色背景,如果想在这些小图片上绘制透明子图,子图将具有不透明的白色背景)。需要记住的是:之后不要再保留对该大图片的引用,以便让其能作为垃圾被收集。
最后,你可以从图片的字节数据中创建一个可变图片:
Image img = DirectUtils.createImage(data, offset, length);
这种方法很有用,比如,你要在几个子图上显示玩家可以选择的赛车,你可以先创建子图,然后在这些子图上绘制那些可选赛车。

java图像处理之--白色变透明

  • 2013年10月16日 15:20
  • 4KB
  • 下载

c# 图像透明处理

  • 2012年03月15日 10:38
  • 7KB
  • 下载

图像处理------透明混合 - Alpha Blending效果

基本原理:图像的透明混合有个专属名词– Alpha Blending 对任意两张图像可以合成为一张图像,合成图像的像素取值根据数学公式:RGB3 = (1- a) * RGB1 + a * RGB2其...
  • mao0514
  • mao0514
  • 2015年07月24日 09:21
  • 1140

靖源图像透明处理专家

  • 2011年11月21日 09:54
  • 557KB
  • 下载

在Visual C#下实现图像的透明处理

  • 2009年04月20日 09:42
  • 2.66MB
  • 下载

对图像透明化的处理

对图像透明化的处理 原始的picturebox   要实现这种模态效果   代码如下   private void button5_Click(object sender, Even...

在Visual C#下实现图像的透明处理

  • 2009年06月26日 10:48
  • 171KB
  • 下载

C#实现图像的透明处理

  • 2013年06月29日 12:37
  • 174KB
  • 下载

php图像处理函数大全(缩放、剪裁、缩放、翻转、旋转、透明、锐化的实例总结)

php图片处理代码分享,包括缩放、剪裁、缩放、翻转、旋转、透明、锐化等。 一、创建图片资源 imagecreatetruecolor(width,height); imagecreatefrom...

C#图像的透明处理.doc

  • 2012年08月19日 11:32
  • 34KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:图像的透明处理!
举报原因:
原因补充:

(最多只允许输入30个字)