Mega Code Archive

 
Categories / Java / J2ME
 

Draw mutable image on a canvas

/*-------------------------------------------------- * MutableImage.java * * Draw mutable image on a canvas * * Example from the book:     Core J2ME Technology * Copyright John W. Muchow   http://www.CoreJ2ME.com * You may use/modify for any non-commercial purpose *-------------------------------------------------*/   import javax.microedition.midlet.*; import javax.microedition.lcdui.*; public class MutableImageWithCanvas extends MIDlet {   private Display  display;     // The display   private ImageCanvas canvas;   // Canvas      public MutableImageWithCanvas()   {     display = Display.getDisplay(this);     canvas  = new ImageCanvas(this);   }     protected void startApp()   {     display.setCurrent( canvas );   }     protected void pauseApp()   { }   protected void destroyApp( boolean unconditional )   { }     public void exitMIDlet()   {     destroyApp(true);     notifyDestroyed();   } } /*-------------------------------------------------- * Class ImageCanvas * * Draw mutable image *-------------------------------------------------*/ class ImageCanvas extends Canvas implements CommandListener {   private Command cmExit;  // Exit midlet   private MutableImage midlet;   private Image im = null;   private String message = "Core J2ME";     public ImageCanvas(MutableImage midlet)   {     this.midlet = midlet;          // Create exit command & listen for events     cmExit = new Command("Exit", Command.EXIT, 1);     addCommand(cmExit);     setCommandListener(this);     try     {       // Create mutable image       im = Image.createImage(80, 20);       // Get graphics object to draw onto the image               Graphics graphics = im.getGraphics();       // Specify a font face, style and size       Font font = Font.getFont(Font.FACE_SYSTEM, Font.STYLE_PLAIN, Font.SIZE_MEDIUM);       graphics.setFont(font);       // Draw a filled (black) rectangle       graphics.setColor(0, 0, 0);       graphics.fillRoundRect(0,0, im.getWidth()-1, im.getHeight()-1, 20, 20);               // Center text horizontally in the image. Draw text in white       graphics.setColor(255, 255, 255);                  graphics.drawString(message,         (im.getWidth() / 2) - (font.stringWidth(message) / 2), 0,           Graphics.TOP | Graphics.LEFT);     }     catch (Exception e)     {       System.err.println("Error during image creation");     }       }    /*--------------------------------------------------   * Draw mutable image    *-------------------------------------------------*/   protected void paint(Graphics g)   {     // Center the image on the display     if (im != null)       g.drawImage(im, getWidth() / 2, getHeight() / 2, Graphics.VCENTER | Graphics.HCENTER);   }   public void commandAction(Command c, Displayable d)   {     if (c == cmExit)       midlet.exitMIDlet();   } }