陈跃峰的J2ME博客

Java,J2ME技术教师 + 自由撰稿人,承接J2ME手机软件开发

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

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

作者:陈跃峰

出自:http://blog.csdn.net/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);

        }

 

    }

}

 

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

发表于 @ 2005年12月07日 18:55:00|评论(loading...)

新一篇: J2ME程序打包发布小技巧 | 旧一篇: J2ME开发环境的安装和使用

用户操作
[即时聊天] [发私信] [加为好友]
陈跃峰
订阅我的博客
XML聚合  FeedSky
订阅到鲜果
订阅到Google
订阅到抓虾
陈跃峰的公告
陈跃峰 个人简历
cqucyf@gmail.com

各计算机杂志需要Java、J2ME技术或手机游戏开发相关稿件的可以联系我,联系方式:cqucyf@gmail.com

本人编写的J2ME基础入门书籍: 《新编J2ME就业培训教程》,购买
dearbook
华储网
当当网
Chinapub
文章分类
收藏
    J2ME技术
    J2ME开发网
    无线空间
    Java网站
    Eclipse官方网站
    Java世纪网
    Sun中国
    Sun官方网站
    常用网站
    Chinabyte
    Google搜索引擎
    华军软件园
    新浪新闻
    发表过文章的媒体
    IT世界网
    电脑报
    软件报
    网上书店
    ITbook
    互动出版网
    当当书店
    第二书店
    我工作过的地方
    上海东部软件园有限公司
    上海天软科技有限公司
    上海托普信息技术学院
    游戏学院南京校区
    游戏学院郑州校区
    电脑报
    友情链接
    acqy的专栏
    eiyaa的专栏
    刀剑啸的专栏
    刘军的BLOG
    王新钢的BLOG
    老紫竹的专栏
    贝壳鱼(k7sem)专栏
    骄傲的猫
    存档
    Csdn Blog version 3.1a
    Copyright © 陈跃峰