This example shows how to clip a region on a Canvas.




 /*
J2ME: The Complete Reference

James Keogh

Publisher: McGraw-Hill

ISBN 0072227109

*/
//jad file (please verify the jar size)
/*
MIDlet-Name: ClippingRegion
MIDlet-Version: 1.0
MIDlet-Vendor: MyCompany
MIDlet-Jar-URL: ClippingRegion.jar
MIDlet-1: ClippingRegion, , ClippingRegion
MicroEdition-Configuration: CLDC-1.0
MicroEdition-Profile: MIDP-1.0
MIDlet-JAR-SIZE: 100

*/
import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;

public class ClippingRegion extends MIDlet{

  private Display  display;     
  private MyCanvas canvas;   

  public ClippingRegion()
  {
    display = Display.getDisplay(this);
    canvas  = new MyCanvas(this);
  }
  protected void startApp()
  {
    display.setCurrent( canvas );
  }
  protected void pauseApp()
  { 
  }
  protected void destroyApp( boolean unconditional )
  { 
  }
  public void exitMIDlet()
  {
    destroyApp(true);
    notifyDestroyed();
  }
  class MyCanvas extends Canvas implements CommandListener
  {
    private Command exit;  
    private ClippingRegion clippingRegion;
    private Image image = null;
    public MyCanvas (ClippingRegion clippingRegion)
    {
      this. clippingRegion = clippingRegion;
      exit = new Command("Exit", Command.EXIT, 1);
      addCommand(exit);
      setCommandListener(this);
      try
      {
        image = Image.createImage(70, 70);
        Graphics graphics = image.getGraphics();
        graphics.setColor(255,0,0);
        graphics.fillArc(10, 10, 60, 50, 180, 180);     
     }
      catch (Exception error)
      {
        Alert alert = new Alert("Failure", "Creating Image", 
                            null, null);
        alert.setTimeout(Alert.FOREVER);
        display.setCurrent(alert);
      }    
    } 
    protected void paint(Graphics graphics)
    {
      if (image != null)
      {
       graphics.setColor(255,255,255);
       graphics.fillRect(0, 0, getWidth(), getHeight());
       graphics.setClip(35, 35, 40, 40);
       graphics.drawImage(image, 30, 30, 
                       Graphics.VCENTER | Graphics.HCENTER);    
      }
    }
    public void commandAction(Command command, Displayable display)
    {
      if (command == exit)
      {
        clippingRegion.exitMIDlet();
      }
    }
  }
}

 

 

 

 Related Tips