聲明:該程序由于速度很慢,只做為技術參考。
//--------------------------------------------------------------------------------------------------------------------------
在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);
雖然繪制速度快了很多但缺點一樣也很多
第一:載入速度比較慢;
第二:只適用于矩形(無透明)圖片;
第三:占用了很多內存。
[注:本文中的代碼在索尼愛立信模擬器上測試通過,為了不影響各位手機的壽命,最好不要在實機上運行。呵呵]
最后,假如大家有更好的解決辦法一定要通知我呀,我在這里先謝謝了。
新聞熱點
疑難解答