<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    饒榮慶 -- 您今天UCWEB了嗎?--http://www.ucweb.com

    3G 手機開發網

       :: 首頁 :: 聯系 :: 聚合  :: 管理
      99 Posts :: 1 Stories :: 219 Comments :: 0 Trackbacks
    關鍵字: J2ME ? ????
    ????? 設計游戲的朋友經常會遇到對圖片資源的操作。今天瀏覽web發現此貼不錯。所以抄過這邊來
    原文:www.linuxmine.com/45911.html



    無論在midp1.0還是在 midp2.0中,系統都沒有給我們提供對圖片進行伸縮操作的api.但是其實我們只要在程序代碼中略施小計,就能達到這個效果,只是效果要比美術做出來 的圖片,呵呵,差多啦,同時也會造成性能損失。伸縮圖片的構造原理就是簡單沿x,y軸按比例放縮,比如說我們需要把一張16*16的png圖片轉化成一張 32*32的圖片,那么我們可以先對該圖片做一個水平方向上的拉伸操作,然后再把水平拉伸后的圖片按垂直方向再做一次拉伸操作。做拉伸操作時,比如水平方 向上,我們需要構造一張32*16的mutable Image,獲取其Graphics,利用該Graphics,繪制該mutable Graphics的每一列像素,這一列像素就來自于原始圖片中的按比例對應的某一列像素。垂直方向上的拉伸操作也是如法炮制。因為是一種按比例的對應關 系,圖像的縮小操作也可按該辦法進行。

    效果如下圖所示
     

    原始圖片

     

    圖片放大為全屏幕大小


    圖片縮小為原來的1/4大小


    好了,我們來看代碼
    java 代碼
    ?
    ???1.??import?javax.microedition.lcdui.Graphics;??
    ???
    2.?import?javax.microedition.lcdui.Image;??
    ???
    3.???
    ???
    4.?/**?
    ???5.?*?圖像工具類?
    ???6.?*?
    @author?Jagie?
    ???7.?*?
    ???8.?
    */??
    ???
    9.???
    ??
    10.?public?class?ImageUtil?{??
    ??
    11.???
    ??
    12.?/**?
    ??13.?*?圖像放縮方法?
    ??14.?*?
    @param?srcImage?原始的Image對象?
    ??15.?*?
    @param?newW?放縮后的Image的寬度?
    ??16.?*?
    @param?newH?放縮后的Image的高度?
    ??17.?*?
    @return?放縮后的Image對象?
    ??18.?
    */??
    ??
    19.???
    ??
    20.?public?static?final?Image?scale?(Image?srcImage,?int?newW,?int?newH)?{??
    ??
    21.?int?srcW?=?srcImage.getWidth();??
    ??
    22.?int?srcH?=?srcImage.getHeight();??
    ??
    23.?//先做水平方向上的伸縮變換??
    ??24.?Image?tmp?=?Image.createImage(newW,?srcH);??
    ??
    25.?Graphics?g?=?tmp.getGraphics();??
    ??
    26.???
    ??
    27.?for?(int?x?=?0;?x?<?newW;?x++)?{??
    ??
    28.?g.setClip(x,?0,?1,?srcH);??
    ??
    29.?//按比例放縮??
    ??30.?g.drawImage(srcImage,x-x*srcWnewW,0,Graphics.LEFT?|?Graphics.TOP);??
    ??
    31.???
    ??
    32.?}??
    ??
    33.???
    ??
    34.?//再做垂直方向上的伸縮變換??
    ??35.?Image?dst?=?Image.createImage(newW,?newH);??
    ??
    36.?g?=?dst.getGraphics();??
    ??
    37.???
    ??
    38.?for?(int?y?=?0;?y?<?newH;?y++)?{??
    ??
    39.?g.setClip(0,?y,?newW,?1);??
    ??
    40.?//按比例放縮??
    ??41.?g.drawImage(tmp,0,y-y*srcHnewH,Graphics.LEFT?|?Graphics.TOP);??
    ??
    42.???
    ??
    43.?}??
    ??
    44.???
    ??
    45.?return?dst;??
    ??
    46.?}??
    ??
    47.???
    ??
    48.???
    ??
    49.?}??
    ??
    50.???
    ??
    51.?也許有同學會提出疑問,既然是按x,y方向按等比例放縮,那我寫成這樣豈不是代碼更簡潔:??
    ??
    52.???
    ??
    53.?public?static?final?Image?scale2(Image?srcImage,?int?newW,?int?newH)?{??
    ??
    54.?int?srcW?=?srcImage.getWidth();??
    ??
    55.?int?srcH?=?srcImage.getHeight();??
    ??
    56.???
    ??
    57.?Image?dst=Image.createImage(newW,newH);??
    ??
    58.?Graphics?g=dst.getGraphics();??
    ??
    59.?for?(int?x?=?0;?x?<?newW;?x++)?{??
    ??
    60.?for?(int?y?=?0;?y?<?newH;?y++)?{??
    ??
    61.?g.setClip(x,?y,?1,?1);??
    ??
    62.?g.drawImage(srcImage,?x-x*srcWnewW,?y?-?y?*?srcH?/?newH,?Graphics.LEFT??
    ??
    63.?|?Graphics.TOP);??
    ??
    64.???
    ??
    65.?}??
    ??
    66.???
    ??
    67.?}??
    ??
    68.???
    ??
    69.?return?dst;??
    ??
    70.?}??



    這種做法效果上和前者無異,但是并不可取,只要算算它的時間復雜度就知道,基本上是前者的平方。在我的機器上,做一次全屏幕的放縮操作,前者耗時60ms,而后者耗時7150ms。



    其實上面的做法很簡單,以后有需求可以整理成一個控件,這樣就可以很方便的調用,與學習。


    爬蟲工作室 -- 專業的手機軟件開發工作室
    3G視線 -- 專注手機軟件開發
    posted on 2007-03-31 19:49 3G工作室 閱讀(1158) 評論(1)  編輯  收藏 所屬分類: j2me

    Feedback

    # re: 如何在MIDP中實現圖片放縮(轉自linuxmine) 2007-04-23 08:21
    謝謝了,我需要這個知識  回復  更多評論
      

    主站蜘蛛池模板: 亚洲色自偷自拍另类小说| 亚洲人成人网站色www| 亚洲av日韩综合一区久热| 香蕉高清免费永久在线视频| 亚洲欧美日韩中文字幕一区二区三区 | 人人揉揉香蕉大免费不卡| 亚洲av中文无码乱人伦在线r▽| 久久精品国产免费一区| 国产性生大片免费观看性| 亚洲熟妇无码另类久久久| 久操免费在线观看| 亚洲中文字幕无码av在线| 小小影视日本动漫观看免费| 免费无毒a网站在线观看| 亚洲精品乱码久久久久久按摩| 99re热精品视频国产免费| 亚洲AV无码一区二区三区牛牛| 免费萌白酱国产一区二区| 岛国岛国免费V片在线观看| 久久久久亚洲精品天堂| 蜜桃视频在线观看免费网址入口 | 我要看免费的毛片| 香港经典a毛片免费观看看| 亚洲日韩av无码| 日本免费xxxx色视频| 狼人大香伊蕉国产WWW亚洲| 亚洲乱码无码永久不卡在线 | 亚洲中文字幕无码专区| 国产综合成人亚洲区| 亚洲综合图色40p| 成人免费大片免费观看网站| 国产亚洲人成在线影院| 久久91亚洲精品中文字幕| 拍拍拍又黄又爽无挡视频免费| 精品国产污污免费网站入口在线| 亚洲国产成人手机在线电影bd| 亚洲Av无码乱码在线znlu| 999国内精品永久免费视频| 人禽伦免费交视频播放| 亚洲欧洲日产国码二区首页| 亚洲精品成人网久久久久久|