import javax.microedition.midlet.*;import javax.microedition.lcdui.*;public class AlphaBlending extends MIDlet implements CommandListener { private Display display; private Form. form; private Command exitCommand; private Command startCommand; private Command backCommand; private AlphaCanvas alphaCanvas; private static final String IMAGE_NAME = "/image.png"; public AlphaBlending() { display = Display.getDisplay(this); exitCommand = new Command("Exit", Command.EXIT, 2); startCommand = new Command("Start", Command.SCREEN, 1); backCommand = new Command("Back", Command.BACK, 1); alphaCanvas = new AlphaCanvas(IMAGE_NAME); form. = new Form("Alpha Blending Demo"); form.append(new StringItem(null, "Press 'Start' to run demo.")); form.addCommand(exitCommand); form.addCommand(startCommand); form.setCommandListener(this); } public void startApp() { display.setCurrent(form); } public void pauseApp() {} public void destroyApp(boolean unconditional) {} public void commandAction(Command c, Displayable d) { if (c == exitCommand) { destroyApp(false); notifyDestroyed(); }else if (c == startCommand) { display.setCurrent(alphaCanvas); alphaCanvas.addCommand(backCommand); alphaCanvas.setCommandListener(this); Thread t = new Thread(alphaCanvas); t.start(); }else if (c == backCommand) { display.setCurrent(form); } } } import javax.microedition.midlet.*;import javax.microedition.lcdui.*;import java.io.*;public class AlphaCanvas extends Canvas implements Runnable { private Image backgroundImage; private int[] maskArray; private int imageWidth; private int imageHeight; private int x; private int y; private int maskHeight = 0; public AlphaCanvas(String imageName) { //create the background image try { backgroundImage = Image.createImage(imageName); }catch(IOException ioe) { ioe.printStackTrace() ; } imageWidth = backgroundImage.getWidth(); imageHeight = backgroundImage.getHeight(); //create a semi-transparent red mask to cover the background image maskArray = new int[imageWidth*imageHeight]; for (int i = 0; i < imageWidth*imageHeight; i++) { maskArray[i] = 0x11FFF000;//alpha coefficient set to 0.3 } x = (getWidth() - imageWidth)/2; y = (getHeight() - imageHeight)/2; } public void paint(Graphics g) { g.setColor(255, 255, 255); g.fillRect(0, 0, getWidth(), getHeight());//paint Canvas background white g.drawImage(backgroundImage, x, y, Graphics.TOP|Graphics.LEFT); //render the semi-transparent mask if (maskHeight != 0){ g.drawRGB(maskArray, 0, imageWidth, x, y, imageWidth, maskHeight, true); } } public void run() { for(int i = 1; i <= imageHeight; i++) { maskHeight = i; repaint(); try { Thread.sleep(50); }catch(InterruptedException ie) {} } } }
?