在MIDP2.0中操作图片像素[1]

[入库:2006年2月23日] [更新:2007年3月24日]

本文简介:

作者:chenyi 文章来源:chenyis blog

正文


   我们知道,在MIDP1.0中,除非我们利用特定厂商的API(比如Nokia),我们是没法对图片的像素进行操作的,但是在MIDP2.0中,Image和Graphics的功能都大大增强了。比如,我们可以获取Image的所有像素值,然后利用程序来修改这些像素(比如说ARGB各自的值),最后再把修改后的像素图绘制出来。通过直接操作图片像素,我们就获得了一种很强大的能力,用编程的方式实现出很多有趣的效果来,而不用额外制作新图片。比如说透明度渐变,颜色反转等。下面就是2个例子,分别实现透明度渐变和颜色反转的功能。

例题一: 透明度渐变效果的实现


   给定一张图片,假如我们想实现这么一种效果:图片由全透明状态逐渐清晰,最后达到正常状态。要实现这一个过程,我们首先要获取该图片的所有像素值,逐步让这些像素的alpha值从0转变到正常,每改变图片的所有像素值一次,我们就请求刷屏一次,把最新的像素图画出来,这样我们就能实现透明度渐变的效果了。代码实现如下:

  1. import java.io.IOException;
  2. import javax.microedition.lcdui.Canvas;
  3. import javax.microedition.lcdui.Display;
  4. import javax.microedition.lcdui.Graphics;
  5. import javax.microedition.lcdui.Image;
  6. import javax.microedition.midlet.MIDlet;
  7. import javax.microedition.midlet.MIDletStateChangeException;
  8. /**
  9.  * 
  10.  * @author Jagie
  11.  * 
  12.  */
  13. public class ShadowMIDlet extends MIDlet {
  14.     Canvas c = new ShadowCanvas();
  15.     public ShadowMIDlet() {
  16.     }
  17.     protected void startApp() throws MIDletStateChangeException {
  18.         Display.getDisplay(this).setCurrent(c);
  19.     }
  20.     protected void pauseApp() {
  21.         // TODO Auto-generated method stub
  22.     }
  23.     protected void destroyApp(boolean arg0) throws MIDletStateChangeException {
  24.         // TODO Auto-generated method stub
  25.     }
  26. }
  27. /**
  28.  * 
  29.  * @author Jagie
  30.  * 
  31.  */
  32. class ShadowCanvas extends Canvas implements Runnable {
  33.     int w, h;
  34.     // 原始图片
  35.     Image srcImage;
  36.     // 原始图片的像素数组
  37.     int[] srcRgbImage;
  38.     // 渐变图片的像素数组
  39.     int[] shadowRgbImage;
  40.     int imgWidth, img

本文关键:在MIDP2.0中操作图片像素
 

本站最佳浏览方式为 分辨率 1024x768 IE 6.0(或更高版本的 IE浏览器)

go top