Use Image as buffer : Screen Buffer « J2ME « Java Tutorial






Use Image as buffer
import javax.microedition.lcdui.Canvas;
import javax.microedition.lcdui.Display;
import javax.microedition.lcdui.Font;
import javax.microedition.lcdui.Graphics;
import javax.microedition.lcdui.Image;
import javax.microedition.midlet.MIDlet;

public class ImageBufferGraphicsMIDlet extends MIDlet {
  private Display display;

  protected void startApp() {
    Canvas canvas = new LineCanvas();
    display = Display.getDisplay(this);
    display.setCurrent(canvas);
  }

  protected void pauseApp() {
  }

  protected void destroyApp(boolean unconditional) {
  }
}

class LineCanvas extends Canvas {
  public void paint(Graphics g) {
        int width = getWidth();
        int height = getHeight();
        Image image = Image.createImage(width, height);
        Graphics imageGraphics = image.getGraphics();
        imageGraphics.fillRect(0, 0, width, height);
        int count = 10;
        int yIncrement = height/count;
        int xIncrement = width/count;
        for (int i = 0, x = xIncrement, y = 0; i < count; i++) {
            imageGraphics.setColor(0xC0 + ((128 + 10 * i) << 8) + ((128 + 10 * i) << 16));
            imageGraphics.drawLine(0, y, x, height);
            y += yIncrement;
            x += xIncrement;
        }
        imageGraphics.setFont(Font.getFont(Font.FACE_PROPORTIONAL,
                                Font.STYLE_UNDERLINED, Font.SIZE_SMALL));
        imageGraphics.setColor(0xffff00);
        imageGraphics.drawString("Image Graphics", width/2, 0, Graphics.TOP | Graphics.HCENTER);
        g.drawImage(image, 0, 0, Graphics.TOP | Graphics.LEFT);
  }
}








31.34.Screen Buffer
31.34.1.Off screen canvasOff screen canvas
31.34.2.Use Image as bufferUse Image as buffer