2008-06-30

图片陈列

package main;

import java.io.IOException;
import javax.microedition.lcdui.Graphics;
import javax.microedition.lcdui.Image;

/**
 * 图片阵列 图片阵列由多个相同尺寸的图片构成
 */
public class ImageGrid {

 private Image image;

 public int unitWidth;

 public int unitHeight;

 private int picturesPerLine;

 /**
  * 构建函数
  * 
  * @param String
  *            s 图片资源名称
  * @param int
  *            w 每个图片的宽度
  * @param int
  *            h 每个图片的高度
  */
 public ImageGrid(String s, int w, int h) {
  try {
   image = Image.createImage(s);
  } catch (IOException ioexception) {
   System.out.println("Unable to load image");
  }
  unitWidth = w;
  unitHeight = h;
  picturesPerLine = image.getWidth() / w;
 }

 /**
  * 将指定索引值的图片显示在画布指定位置
  * 
  * @param Graphics
  *            g 画布
  * @param int
  *            x 左上角的x坐标
  * @param int
  *            y 左上角的y坐标
  * @param int
  *            index 图片在图象组中的索引
  */
 public final void drawOne(Graphics g, int x, int y, int index) {
  g.setClip(x, y, unitWidth, unitHeight);
  g.drawImage(image, x - index % picturesPerLine * unitWidth, y - index / picturesPerLine * unitHeight, Graphics.TOP | Graphics.LEFT);
 } 
}


代码很简单,读入一个由多个图片拼接而成的大图片,要绘制的时候并不新建图片,而是采用绘制整个图片的方式,但在绘制图片前根据要绘制的小图片的index先设置显示裁剪区。

这种方式实现得很简洁,并且无须生成新图片,而速度是否受到影响则大家可以实测一下。
评论
发表评论

您还没有登录,请登录后发表评论

iwinyeah
搜索本博客
我的相册
C8609f76-ccc2-3dbc-a9e8-b5e08077b8c2-thumb
jaccount1.0.7
共 5 张
最近加入圈子
存档
最新评论