J2ME游戏开发之图片绘制

1. 方法

      a. 获得图片

        img = Image.createImage(str); //J2ME里面代价比较高

b. 绘制图片

       drawImage(Image image,int left, int top, Graphics.LEFT | Graphics.TOP);

 

c 安装区域绘制:

   drawRegion(Image src, int x_src, int y_src, int width, int height, int transform, int x_dest, int y_dest, int anchor)
    Image src, 图片
    int x_src, 从这个图片的x坐标开始截取
    int y_src,
    int width, 截取宽度
    int height,
    int transform, 旋转方式(0:不旋转,1...   一直到7,你可以自己试下)
    int x_dest, 画到屏幕的位置的x坐标
    int y_dest,
    int anchor Graphics.LEFT|Graphics.TOP

2. code

package com.sliw.graphics;



import javax.microedition.lcdui.Canvas;

import javax.microedition.lcdui.Graphics;

import javax.microedition.lcdui.Image;

import javax.microedition.xml.rpc.Type;



public class ImageCanvas extends Canvas{



    private int topY = 10;

    private int left = 10;

    private Image image = null;

    private Image bgImage = null;

    

    public ImageCanvas(){

        image = getImage("/8.png");

    }

    

    protected void paint(Graphics g) {

        // TODO Auto-generated method stub

        clear(g);

        

        drawImage(g);

        

        topY = topY + 40;

        

        drawRegion(g);

        

        topY = topY + 80;

        drawDoubleBuffer(g);

    }



    private void clear(Graphics g){

        g.setColor(255,255,255);

        g.fillRect(0, 0, getWidth(), getHeight());

    }

    

    

    void drawDoubleBuffer(Graphics g){

        

        bgImage = Image.createImage(100, 100);

        

        /** 以背景图产生绘制对象,并在图片上绘制2个位图**/

        Graphics offg = bgImage.getGraphics();

        offg.setColor(255,0,0);

        offg.drawRect(0, 0, 90, 90);

        offg.drawImage(image, 0, 0, Graphics.LEFT | Graphics.TOP);        

        offg.drawRegion(image, 0, 0, 24, image.getHeight(), 1, 10, 50, Graphics.LEFT | Graphics.TOP);

        

        //把背景绘制到图片上

        g.drawImage(bgImage, left, topY, Graphics.LEFT | Graphics.TOP);

        

    }

    

    /**

     * drawImage(Image image,int left, int top, Graphics.LEFT | Graphics.TOP);

     * @param g

     */

    private void drawImage(Graphics g){

    

        g.drawImage(image, left, topY, Graphics.LEFT | Graphics.TOP);

    }

    

    

    /**

     * drawRegion(Image src, int x_src, int y_src, int width, int height, int transform, int x_dest, int y_dest, int anchor) 

     *  Image src, 图片

     *  int x_src, 从这个图片的x坐标开始截取

        int y_src, 

        int width, 截取宽度

        int height, 

        int transform, 旋转方式(0:不旋转,1...   一直到7,你可以自己试下)

        int x_dest, 画到屏幕的位置的x坐标

        int y_dest, 

        int anchor Graphics.LEFT|Graphics.TOP

     */

    private void drawRegion(Graphics g){

        g.drawRegion(image, 0, 0, 24, image.getHeight(), 0, left, topY, Graphics.LEFT | Graphics.TOP);

        

        g.drawRegion(image, 0, 0, 24, image.getHeight(), 1, left + 30, topY, Graphics.LEFT | Graphics.TOP);

        

        g.drawRegion(image, 0, 0, 24, image.getHeight(), 2, left + 60, topY, Graphics.LEFT | Graphics.TOP);

    }

    

    /**

     * 载入一张图片

     * @param str 图片路径

     * @return

     */

    public Image getImage(String str){

        Image img=null;

        try {

          img = Image.createImage(str);

        } catch (Exception ex) {

            ex.printStackTrace();

        }

       return img;

    }

    

    

}

你可能感兴趣的:(j2me)