国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

在運行時將大圖分割為小圖片數組

2019-11-18 12:45:46
字體:
來源:轉載
供稿:網友

本文介紹如何在程序運行時將一個較大的圖片分割為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));



發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 宁陕县| 织金县| 崇仁县| 福建省| 昭苏县| 车险| 邵东县| 惠水县| 寿宁县| 广河县| 绍兴县| 兴义市| 张家川| 嵊州市| 峡江县| 南江县| 岐山县| 乌审旗| 太和县| 南靖县| 凤山县| 天水市| 兴仁县| 云和县| 白玉县| 东乌珠穆沁旗| 大渡口区| 上栗县| 巴楚县| 奉化市| 南阳市| 威信县| 普兰县| 喀喇沁旗| 资源县| 桂林市| 金乡县| 盐城市| 佛山市| 英超| 晋江市|