iwinyeah, J2ME技术的学习与实践者
这就是我
最新公告
站点日历
最新日志
最新回复
最新留言
登录
 日志搜索
友情链接
其他信息


·图片阵列     -|iwinyeah 发表于 2008-4-25 22:38:00

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先设置显示裁剪区。

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

[阅读全文 | 回复(0) | 引用通告 | 编辑]

  • 标签:图片 
  • 发表评论:
    Powered by Oblog.