J2ME2.0 画刷,自适应屏幕

唉,首先要批评下自己,真的很花心,小猫钓鱼三心二意,前阵子对wxWidgets很疯迷,势必要做出最绚丽的UI才罢休。没想到期间被一些事情缠绕一下,现在又对J2ME感兴趣了,其中还是喜欢界面方面,再者上回看新闻说老马,马化腾都说如果身边什么都没有了就去做iPhone开发,很赚钱,偷笑下。而现在LinuxMobileOS更是如火如荼,主要是Google带了个好头,从心里面来说真的很尊敬Google,都不晓得网上哪些骂Google的是什么脑子,有点深,不讨论先。

下手之前初步看了下API,天,J2ME的绘制API真的是很冏阿,连个画刷都无,没办法,习惯性Google下,找了几篇文章,挑了一篇自己改造了下,其实代码虽然是Java的,思路也适合其它语言吧,包括双缓冲机制。

 

package com.tinyms;

import java.io.IOException;

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

public class ImageUtils {
	//水平填充
	public static int H = 0;
	//垂直填充
	public static int V = 1;
	public static Image brush(String imgUrl,int rectWidth,int rectHeight,int flag) throws IOException{
		//从/res目录载入画刷需要的背景图片
		Image bgImage = Image.createImage(imgUrl);
		//背景图片的宽度
		int bgImageW = bgImage.getWidth();
		//背景图片的高度
		int bgImageH = bgImage.getHeight();
		//计算要刷多少次,水平与垂直方向
		int col = rectWidth/bgImageW + 1;
		int row = rectHeight/bgImageH + 1;
		//创建缓冲临时图像,2个参数表示最终需要绘制到屏幕上的图片的宽度高度
		Image tempImage = Image.createImage(rectWidth, rectHeight);
		//缓冲图像的GD
		Graphics g = tempImage.getGraphics();
		//刷墙
		if(flag==H){
			for(int c=0;c<col;c++){
				g.drawImage(bgImage, c*bgImageW, 0, Graphics.LEFT|Graphics.TOP);
			}
		}else if(flag==V){
			for(int r=0;r<row;r++){
				g.drawImage(bgImage, 0, r*bgImageH, Graphics.LEFT|Graphics.TOP);
			}
		}
		bgImage = null;
		return tempImage;
	}
}

然后测试一下:

 

protected void paint(Graphics g) {
		// TODO Auto-generated method stub
		int w = this.getWidth();
		int h = this.getHeight();
		try {
			Image bg = ImageUtils.brush("/AlbumAlphaBlend.png", w, h, ImageUtils.V);//Image.createImage("/topnav_divider.png");
			g.drawImage(bg, 0, 0, Graphics.LEFT|Graphics.TOP);
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}

 

 

水平刷

垂直刷:

posted on 2010-06-05 17:10  TinyMS  阅读(521)  评论(0)    收藏  举报

导航