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