在MIDP1.0中简单模拟图片翻转功能

类别:Java 点击:0 评论:0 推荐:

声明:该程序由于速度很慢,只做为技术参考。
//--------------------------------------------------------------------------------------------------------------------------
在MIDP1.0中,大家都知道并没有提供图片翻转功能,这里提出了一个简单实现图片翻转功能的方法,虽然该方法并不实用(在速度很快的手机上也许能用的上),但希望能给大家一些帮助。
 public void paintImage_Level(Graphics g,Image image,int x,int y)
 {//这段代码主要实现了图片的水平翻转,原理很简单。
      for(int i=0;i<image.getWidth();++i)
      {
           g.setClip(x+i,y,1,image.getHeight());
           g.drawImage(image,x-image.getWidth()+i*2+1,y,Graphics.TOP|Graphics.LEFT);
      }
 }
//----------------------------------------------------------------------------------------------------------------------------
 public void paintImage_Antic(Graphics g,Image image,int x,int y)
 {//这段代码主要实现了图片的逆时针90度的翻转
       for(int i=0;i<image.getWidth();++i)
      {
           for(int j=0;j<image.getHeight();++j)
           {
                g.setClip(x+i,y+j,1,1);
                g.drawImage(image,x-image.getWidth()+j+i+1,y+j-i,Graphics.TOP|Graphics.LEFT);
           }
      }
 }
大家可能已经看出该功能的实现方法了,就是使用setClip()函数来控制绘图的区域,来实现类似绘制像素点的功能。缺点很明显,绘制速度太慢。
下面做了一点小小的改进,使用了双缓冲技术,图片的显示速度快了很多,下面只列出部分的代码。
Image mid1;
……  ……
mid1=Image.createImage(130,130);
paintImage_Level(mid1.getGraphics(),image,(getWidth()-image.getWidth())/2,(getHeight()-image.getHeight())/2);
…… ……
g.drawImage(mid1,(getWidth()-image.getWidth())/2,(getHeight()-image.getHeight())/2,Graphics.TOP|Graphics.LEFT);
虽然绘制速度快了很多但缺点一样也很多
第一:载入速度比较慢;
第二:只适用于矩形(无透明)图片;
第三:占用了很多内存。
[注:本文中的代码在索尼爱立信模拟器上测试通过,为了不影响各位手机的寿命,最好不要在实机上运行。呵呵]

最后,如果大家有更好的解决办法一定要通知我呀,我在这里先谢谢了。

本文地址:http://com.8s8s.com/it/it13540.htm