在J2ME中实现图片的反转效果(包括垂直和水平)

本文介绍在J2ME编程中实现图片反转效果(包括垂直和水平)的技巧。图象反转是按规律重新排列像素点,水平反转处理每列,垂直反转处理每行。文中给出示例代码,将反转功能封装成方法,展示了具体实现过程。

J2ME中实现图片的反转效果(包括垂直和水平)

作者:陈跃峰

出自:http://blog.youkuaiyun.com/mailbomb

J2ME编程中,为了最大限度的节约空间,有些时候需要自己来实现图形的反转,这里简单介绍一下实现图形反转的一些技巧。

图象的反转其实就是按照一定的规律,将图片中的每个像素点进行重新的排列。反转是进行像素点重新排列中简单的一种。

水平反转的原理就是把图片中的每一列都进行处理,而垂直反转则是对于图片中的每行进行重新的处理,下面是一个简单的示例代码。其中将反转的功能封装成了具体的方法,具体代码如下:

package imageconvert;

import javax.microedition.lcdui.*;

/**

* 实现图片的水平和垂直反传,即对称变换

*

* @author 陈跃峰

* email:cqucyf@gmail.com

* @version 1.0

*/

public class ImageConvertCanvas extends Canvas {

/**图片对象*/

private Image img = null;

public ImageConvertCanvas() {

//导入图片

try{

img = Image.createImage("/res/pic/test.png");

}catch(Exception e){}

}

protected void paint(Graphics g) {

//绘制正常的图片

g.drawImage(img,30,40,Graphics.LEFT | Graphics.TOP);

//绘制水平反转的图片

hConvert(g,img,30,60);

//绘制垂直反转的图片

vConvert(g,img,30,80);

}

/**

* 水平反转,即左右对称

* @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);

}

}

}

说明:未经允许,严禁转载!

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值