声明:该程序由于速度很慢,只做为技术参考。 //-------------------------------------------------------------------------------------------------------------------------- 在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); 虽然绘制速度快了很多但缺点一样也很多 第一:载入速度比较慢; 第二:只适用于矩形(无透明)图片; 第三:占用了很多内存。 [注:本文中的代码在索尼爱立信模拟器上测试通过,为了不影响各位手机的寿命,最好不要在实机上运行。呵呵]
最后,如果大家有更好的解决办法一定要通知我呀,我在这里先谢谢了。

|