网络编程 | 站长之家 | 网页制作 | 图形图象 | 操作系统 | 冲浪宝典 | 软件教学 | 网络办公 | 邮件系统 | 网络安全 | 认证考试 | 系统进程
Firefox | IE | Maxthon | 迅雷 | 电驴 | BitComet | FlashGet | QQ | QQ空间 | Vista | 输入法 | Ghost | Word | Excel | wps | Powerpoint
asp | .net | php | jsp | Sql | c# | Ajax | xml | Dreamweaver | FrontPages | Javascript | css | photoshop | fireworks | Flash | Cad | Discuz!
当前位置 > 网站建设学院 > 网络编程 > Java
Tag:注入,存储过程,分页,安全,优化,xmlhttp,fso,jmail,application,session,防盗链,stream,无组件,组件,md5,乱码,缓存,加密,验证码,算法,cookies,ubb,正则表达式,水印,索引,日志,压缩,base64,url重写,上传,控件,Web.config,JDBC,函数,内存,PDF,迁移,结构,破解,编译,配置,进程,分词,IIS,Apache,Tomcat,phpmyadmin,Gzip,触发器,socket
网络编程:ASP教程,ASP.NET教程,PHP教程,JSP教程,C#教程,数据库,XML教程,Ajax,Java,Perl,Shell,VB教程,Delphi,C/C++教程,软件工程,J2EE/J2ME,移动开发
本月文章推荐
.如何正确使用Java I/O输出和读入.
.一个最简单的 JavaBeanMaker(原创.
.IBM 关于 数据验证 和 异常处理的.
.利用WebLogic的POOL连接数据库.
.Java性能的优化(上).
.Java 建模:子整体软件开发.
.常见的十四种Java开发工具及其特.
.Struts源码的学习之配置模块初始.
.在ejb中直接利用jdbc读取数据库记.
.(方志文)MutableGridLayout布局管.
.Java小程序源文件的组成.
.JDBC技术介绍.
.用Java编写简单的UDP网络通信程序.
.认识JDBC 2.0中的高级数据类型.
.JBOSS-QL中的like、orderby的实现.
.用JVM工具接口创建调试和分析代理.
.浅析Java中Data类的应用.
.Java中static、this、super、fin.
.论全世界所有程序员都会犯的错误.
.使用设计模式改善程序结构.

在运行时将大图分割为小图片数组

发表日期:2008-1-5


本文介绍如何在程序运行时将一个较大的图片分割为Image数组。实现此功能最重要的就是使用Graphics的坐标变换和绘制图片的功能。也就是使用translate()和drawImage()方法。

我们设计一个ImageUtil类,如下所示:

/**
 * Copyright_2006, eric zhan
 * Created on 2006-6-8
 */
package com.j2medev.image;

import Javax.microedition.lcdui.Graphics;
import javax.microedition.lcdui.Image;

public class ImageUtil {

 public static Image[] splitImage(Image img, int rows, int cols) {
  
  if(img == null)
   return null;
  Image[] result = new Image[rows * cols];
  int w = img.getWidth()/cols;
  int h = img.getHeight()/rows;
  
  for(int i = 0;i<result.length;i++){
   result[i] = Image.createImage(w,h);
   Graphics g = result[i].getGraphics();
   g.translate((-i%cols)*w,(-i/cols)*h);
   g.drawImage(img,0,0,Graphics.LEFTGraphics.TOP);
  }
  return result;
 }

}

静态方法splitImage(Image img,int rows,int cols)把参数img指定的Image对象分割为rows行cols列的Image数组。这里我们把数组存储为一维数组,当然您也可以存储为二维数组。根据img的高度和宽度以及目标数组的行数和列数,可以计算出每个小图片的高度和宽度,并且每个图片的高度和宽度应该是相等的。Graphics的translate(int x,int y)方法可以将graphics上下文的原点变换到(x,y),这样随后的绘画动作都是以新的原点为准了。随后我们调用drawImage()就可以把img的部分内容绘画的新的Image中。循环结束后,把Image数组返回。

下面编写一个测试的MIDlet来看看效果,代码如下:

/**
 * Copyright_2006, eric zhan
 * Created on 2006-6-8
 */
package com.j2medev.image;

import java.io.IOException;

import javax.microedition.lcdui.Canvas;
import javax.microedition.lcdui.Display;
import javax.microedition.lcdui.Form;
import javax.microedition.lcdui.Graphics;
import javax.microedition.lcdui.Image;
import javax.microedition.midlet.MIDlet;
import javax.microedition.midlet.MIDletStateChangeException;

public class ImageMIDlet extends MIDlet {

 protected void destroyApp(boolean arg0) throws MIDletStateChangeException {

 }

 protected void pauseApp() {
  // TODO Auto-generated method stub

 }

 protected void startApp() throws MIDletStateChangeException {
  // TODO Auto-generated method stub
  Display display = Display.getDisplay(this);
  Image img = null;
  try {
   img = Image.createImage("/test.png");
  } catch (IOException ex) {
   Form form = new Form("error");
   form.append("error to load the img");
   display.setCurrent(form);
   return;
  }
  display.setCurrent(new ImageCanvas(img));


上一篇:基于Nokia S60的游戏开发 人气:842
下一篇:J2ME蓝牙实战入门 人气:648
浏览全部Java的内容 Dreamweaver插件下载 网页广告代码 祝你圣诞节快乐 2009年新年快乐