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先设置显示裁剪区。
这种方式实现得很简洁,并且无须生成新图片,而速度是否受到影响则大家可以实测一下。


评论