作者:chenyi 文章来源:chenyis blog
正文
我们知道,在MIDP1.0中,除非我们利用特定厂商的API(比如Nokia),我们是没法对图片的像素进行操作的,但是在MIDP2.0中,Image和Graphics的功能都大大增强了。比如,我们可以获取Image的所有像素值,然后利用程序来修改这些像素(比如说ARGB各自的值),最后再把修改后的像素图绘制出来。通过直接操作图片像素,我们就获得了一种很强大的能力,用编程的方式实现出很多有趣的效果来,而不用额外制作新图片。比如说透明度渐变,颜色反转等。下面就是2个例子,分别实现透明度渐变和颜色反转的功能。
例题一: 透明度渐变效果的实现
给定一张图片,假如我们想实现这么一种效果:图片由全透明状态逐渐清晰,最后达到正常状态。要实现这一个过程,我们首先要获取该图片的所有像素值,逐步让这些像素的alpha值从0转变到正常,每改变图片的所有像素值一次,我们就请求刷屏一次,把最新的像素图画出来,这样我们就能实现透明度渐变的效果了。代码实现如下:
- import java.io.IOException;
- import javax.microedition.lcdui.Canvas;
- import javax.microedition.lcdui.Display;
- import javax.microedition.lcdui.Graphics;
- import javax.microedition.lcdui.Image;
- import javax.microedition.midlet.MIDlet;
- import javax.microedition.midlet.MIDletStateChangeException;
- /**
- *
- * @author Jagie
- *
- */
- public class ShadowMIDlet extends MIDlet {
- Canvas c = new ShadowCanvas();
- public ShadowMIDlet() {
- }
- protected void startApp() throws MIDletStateChangeException {
- Display.getDisplay(this).setCurrent(c);
- }
- protected void pauseApp() {
- // TODO Auto-generated method stub
- }
- protected void destroyApp(boolean arg0) throws MIDletStateChangeException {
- // TODO Auto-generated method stub
- }
- }
- /**
- *
- * @author Jagie
- *
- */
- class ShadowCanvas extends Canvas implements Runnable {
- int w, h;
- // 原始图片
- Image srcImage;
- // 原始图片的像素数组
- int[] srcRgbImage;
- // 渐变图片的像素数组
- int[] shadowRgbImage;
- int imgWidth, img
本文关键:在MIDP2.0中操作图片像素