<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工作室 閱讀(1159) 評論(1)  編輯  收藏 所屬分類: j2me

    Feedback

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

    主站蜘蛛池模板: 成人a毛片免费视频观看| 久久亚洲中文无码咪咪爱| 久久久久久国产a免费观看不卡| 免费日本黄色网址| 老司机午夜性生免费福利| 波多野结衣一区二区免费视频| 亚洲av无码一区二区三区天堂 | 日韩插啊免费视频在线观看 | 最近免费mv在线电影| 久久精品国产亚洲AV无码偷窥| 国产精品99精品久久免费| 亚洲最新黄色网址| 三年片在线观看免费观看高清电影 | 亚洲制服丝袜第一页| 国内免费高清在线观看| 在线观看亚洲精品专区| 亚洲一区二区精品视频| 日韩插啊免费视频在线观看| 亚洲激情视频图片| 免费v片在线观看品善网| 久久www免费人成精品香蕉| 香蕉蕉亚亚洲aav综合| 在线看片韩国免费人成视频| 亚洲av无码专区国产不乱码| 亚洲情a成黄在线观看| 亚洲视频免费在线观看| 亚洲伊人精品综合在合线| 韩国18福利视频免费观看| jizz在线免费播放| 亚洲国产美女视频| 四虎在线播放免费永久视频| 青柠影视在线观看免费高清| 亚洲国产精品久久人人爱| 国产成人啪精品视频免费网| a级成人免费毛片完整版| 亚洲AV无码专区在线亚| 亚洲中文无韩国r级电影| av无码久久久久不卡免费网站| 在线观看亚洲网站| 亚洲精品一区二区三区四区乱码| 国产午夜无码视频免费网站|