/*
* testmidlet.java
*
* created on 2005年12月9日, 上午9:02
*/package imageconvert; import javax.microedition.midlet.*;
import javax.microedition.lcdui.*; /**
*
* @author administrator
* @version
*/
public class testmidlet extends midlet {
private display display = null;
private imageconvertcanvas canvas = null;
public void startapp() {
display = display.getdisplay(this);
canvas = new imageconvertcanvas();
display.setcurrent(canvas);
}
public void pauseapp() {
}
public void destroyapp(boolean unconditional) {
}
}
package imageconvert; import javax.microedition.lcdui.*;
/**
*
* 实现图片的水平和垂直反传,即对称变换
* @version 1.0
*
*/ public class imageconvertcanvas extends canvas {
/**图片对象*/
private image img = null;
public imageconvertcanvas() {
//导入图片
try{
img = image.createimage("/leaf.png");
}catch(exception e){}
}
protected void paint(graphics g) {
int color = g.getcolor();
g.setcolor(0xffffff);
g.fillrect(0,0, getwidth(),getheight());
g.setcolor(color);
//绘制正常的图片
g.drawimage(img,0,0,graphics.left graphics.top);
//绘制水平反转的图片
hconvert(g,img,0,img.getheight()+5);
//绘制垂直反转的图片
vconvert(g,img,0,img.getheight()*2+10);
}
/**
*
* 水平反转,即左右对称
*
* @param g graphics 画笔
*
* @param img image 图片
*
* @param x int 图片左上角的x坐标
*
* @param y int 图片左上角的y坐标
*
*/
private void hconvert(graphics g,image img,int x,int y){
if(img == null){
return;
}
//获得图片大小
int w = img.getwidth();
int h = img.getheight();
//绘制
for(int i = 0;i < w;i++){
//设置切割区域是1列
g.setclip(x + i,y,1,h);
//绘制图片
g.drawimage(img,x - w + 2 * i,y,graphics.left graphics.top);
}
} /**
*
* 垂直反转,即上下对称
*
* @param g graphics 画笔
*
* @param img image 图片
*
* @param x int 图片左上角的x坐标
*
* @param y int 图片左上角的y坐标
*
*/
private void vconvert(graphics g,image img,int x,int y){
if(img == null){
return;
}
//获得图片大小
int w = img.getwidth();
int h = img.getheight(); //绘制
for(int i = 0;i < h;i++){
//设置切割区域是1行
g.setclip(x,y + i,w,1);
//绘制图片
g.drawimage(img,x,y - h + 2 * i,graphics.left graphics.top);
} }
} |