j2me界面上的东西都可以看成一张图片,一个屏幕就是一张图片,
你可以
Image image = Image.createImage(240,320);
Graphics gs = image.getGraphics();
创建一个静态的IMAGE,用这个IMAGE把屏幕上的东西都画再这个image上面。
最后再把这个image画在paint()方法中的Graphics上,关闭程序后你只要把这个image写到RMS或者文件系统中,
打开这个程序你再把这个image流读出来再画在Graphics上就OK了这是用的二级缓存画图片

解决方案 »

  1.   

    Image image = null;
    Graphics gs = null;
    public int[] rgb = new int[240 * 320];
    public int imageId = -1;
    //打开程序
    public void open()
    {
    try {
    RecordStore rs = RecordStore.openRecordStore("image", true);
    byte[] data = rs.getRecord(imageId);
    if(data == null || data.length <= 0)
    {
    image = Image.createImage(240,320);
    }
    else
    {
    ByteArrayInputStream byin = new ByteArrayInputStream(data);
    DataInputStream dain = new DataInputStream(byin);
    for(int i = 0; i < dain.available(); i++)
    {
    rgb[i] = dain.readInt();
    }
    image = Image.createRGBImage(rgb, 240, 320, true);
    dain.close();
    byin.close();
    }
    gs = image.getGraphics();
    } catch (Exception e) {
    // TODO Auto-generated catch block
    e.printStackTrace();

    }

    //把所有东西先画到这个image上面
    public void paintImage()
    {
    // gs.fillArc(x, y, width, height, startAngle, arcAngle)
    // gs.fillRect(x, y, width, height)
    // .....................
    //把东西画好后。
    }

    protected void paint(Graphics g) {
    // TODO Auto-generated method stub
    //把画好后的image画在这个Graphics上面
      g.fillRect(0, 0, this.getWidth(), this.getHeight());
      g.setColor(255,255,255);
      g.drawImage(image, 0, 0, g.TOP | g.LEFT);
    }

    //关闭程序
    public void close()
    {
    try {
    image.getRGB(rgb, 0, 240, 0, 0, 240, 320);
    RecordStore rs = RecordStore.openRecordStore("image", true);
    ByteArrayOutputStream by = new ByteArrayOutputStream();
    DataOutputStream data = new DataOutputStream(by);
    for(int i = 0; i < rgb.length; i++)
    {
    data.writeInt(rgb[i]);
    }
    data.flush();
    data.close();
    by.flush();
    by.close();
    imageId = rs.addRecord(by.toByteArray(), 0, (by.toByteArray()).length);
    rs.closeRecordStore();
    } catch (Exception e) {
    // TODO Auto-generated catch block
    e.printStackTrace();

    }
      

  2.   

    肯定要重画了,,
    反正是画一张静态的IMAGE,不影响性能