Do you drink java?



                像寫情書一樣coding

           

          [Download] Java 2D API 程序員指南

          Programmer's Guide to the JavaTM 2D API 中文版

          http://www.aygfsteel.com/Files/leon/Java2DAPI程序員指南.rar

          posted @ 2005-09-13 17:09 leon 閱讀(2322) | 評論 (5)編輯 收藏

          [Image] 使用Jimi輸出PICT格式圖像的一處BUG及解決辦法

          使用sun提供的圖像管理工具包 Jimi1_0 版本,保存PICT文件格式時輸出的圖像寬、高和內存中的圖像源一致,可是顯示出來卻是純白的。這是 Jimi1_0 版本對寫Pict格式的一處 BUG,下載了新的補訂類PICTWriter.java?重新編譯成PICTWriter.class加入 JimiProClasses.zip 中覆蓋原有的 PICTWriter.class,遂寫 PICT 格式成功。


          參考:http://amug.org/~glguerin/other/index.html#PICTWriter
          提醒:編譯 PICTWriter.java 時需要兼容JDK以前的版本。

          posted @ 2005-07-21 12:28 leon 閱讀(1293) | 評論 (1)編輯 收藏

          AWT中圖像的異步加載和等待圖像的完全加載

          圖像的異步加載

          圖像的加載和顯示是異步進行的,圖像 的生產者(ImageProducer)傳遞給圖像的消費者(ImageConsumer)一個與圖像相關的位,因為圖像的生產過程是一個異步行為,所以 AWT 也提供一個圖像觀察(ImageObserver),用來監(jiān)視圖像生產者的圖像生產過程。

          因為 java.awt.Component 實現 ImageObserver 接口,所以 AWT 中每個構件都是ImageObserver ,當一個給定的 ImageProducer 采取異步操作時,這個 ImageObserver 可以選擇是否被更新。

          現在看一個例子:

          import?java.net.URL;
          import?java.applet.Applet;
          import?java.awt.Graphics;
          import?java.awt.Image;

          public?class?ImageTestAppletSimple2
          ????
          extends?Applet?{
          ??
          private?Image?im;

          ??
          public?void?init()?{
          ????im?
          =?getImage(getCodeBase(),?"lena.jpg");
          ??}

          ??
          public?void?paint(Graphics?g)?{
          ????System.out.println(
          "drawing?image");
          ????System.out.println(g.drawImage(im,?
          0,?0,?this));
          ??}
          }

          當這個 Applet 第一次被調用時,將打印出下面的結果:
          drawing?image...
          false
          drawing?image...
          false
          drawing?image...
          false
          drawing?image...
          true

          執(zhí) 行結果說明 drawImage() 在第一次被調用時,沒有圖像被加載,drawImage() 只是向和圖像相關的 ImageProducer 注冊 ImageObserver,圖像被完全加載前 drawImage() 方法返回 false 直到圖像被完全加載返回 true。

          當 drawImage() 返回之后,只要有圖像的新的部分被加載,ImageObserver 中的 imageUpdate() 方法就會被調用。當 ImageObserver 是 AWT 構件時,Component.imageUpdate() 調用 repaint() 方法清除構件背景并調用 paint() 方法重繪剛剛得到的圖像位。重復循環(huán),ImageProducer 加載圖像的下一塊,調用 ImageObserver 的 imageUpdate()。當圖像被完全加載時,ImageProducer 停止調用 ImageObserver 的 imageUpdate(),循環(huán)中斷。

          load -> imageUpdate() -> repaint() -> update() -> paint()


          等待圖像的完全加載

          上面的例子介紹了圖像的異步加載,現在介紹2個方法使圖像完全加載前不顯示。

          ·重載 ImageObserver 中的 imageUpdate() 方法,使其在圖像完全加載前不調用 repaint()。


          import ?java.applet.Applet;
          import ?java.awt.Graphics;
          import ?java.awt.Image;

          public ? class ?ImageTestAppletWithUpdate
          ????
          extends ?Applet?{
          ??
          private ?Image?im;

          ??
          public ? void ?init()?{
          ????im?
          = ?getImage(getCodeBase(),? " lena.jpg " );
          ??}

          ??
          public ? void ?paint(Graphics?g)?{
          ????g.drawImage(im,?
          0 ,? 0 ,? this );
          ??}

          ??
          public ? boolean ?imageUpdate(Image?image,? int ?flags,? int ?x,? int ?y,? int ?w,? int ?h)?{
          ????System.out.println(
          " imageUpdate():x= " ? + ?x? + ? " ,y= " ? + ?y? + ? " ,w= " ? + ?w? + ? " ,h= " ? +
          ???????????????????????h);

          ????
          if ?(?(flags? & ?ALLBITS)? == ? 0 )?{
          ??????
          return ? true ;? // ?need?more?updates
          ????}
          ????
          else ?{
          ??????repaint();
          ??????
          return ? false ;? // ?image?is?fully?loaded
          ????}
          ??}
          }

          使用 java.awt.MediaTracker 類跟蹤圖像的加載,不必重載 imageUpdate() 方法。


          import ?java.net.URL;
          import ?java.applet.Applet;
          import ?java.awt.Graphics;
          import ?java.awt.Image;
          import ?java.awt.MediaTracker;

          public ? class ?ImageTestAppletWithMediaTracker
          ????
          extends ?Applet?{
          ??
          private ?Image?im;

          ??
          public ? void ?init()?{
          ????im?
          = ?getImage(getCodeBase(),? " lena.jpg " );

          ????MediaTracker?tracker?
          = ? new ?MediaTracker( this );
          ????tracker.addImage(im,?
          0 );
          ????
          try ?{
          ??????tracker.waitForID(
          0 );
          ????}
          ????
          catch ?(InterruptedException?e)?{
          ??????e.printStackTrace();
          ????}

          ????System.out.print(
          " Image?width?=? " ? + ?im.getWidth( this ));
          ????System.out.println(
          " height?=? " ? + ?im.getHeight( this ));
          ??}

          ??
          public ? void ?paint(Graphics?g)?{
          ????g.drawImage(im,?
          0 ,? 0 ,? this );
          ??}
          }

          我們可以把使用 java.awt.MediaTracker 類將圖像完全加載的方法包裝成一個實用方法

          /** ? *//**
          ???*?使用?java.awt.MediaTracker?將圖像完全加載。
          ???*?
          @param ?component?Component
          ???*?
          @param ?img?Image
          ???
          */
          ??
          public ? static ? void ?waitForImage(Component?component,?Image?img)?{
          ????MediaTracker?tracker?
          = ? new ?MediaTracker(component);
          ????
          try ?{
          ??????tracker.addImage(img,?
          0 );
          ??????tracker.waitForID(
          0 );
          ????}
          ????
          catch ?(InterruptedException?ex)?{
          ??????ex.printStackTrace();
          ????}
          ??}

          posted @ 2005-07-12 10:33 leon 閱讀(1396) | 評論 (0)編輯 收藏

          AWT中加載和顯示圖像的方法

          正文
          http://www.aygfsteel.com/leon/articles/7494.html

          posted @ 2005-07-12 10:31 leon 閱讀(3088) | 評論 (6)編輯 收藏

          僅列出標題
          共5頁: 上一頁 1 2 3 4 5 

          導航

          統(tǒng)計

          公告

          DSC_0106.jpg
          本博客已經搬家到CSDN
          http://blog.csdn.net/chenweionline




          常用鏈接

          留言簿(5)

          隨筆分類

          隨筆檔案

          About Technology

          My Favorite Website

          搜索

          積分與排名

          最新評論

          • 1.?re: 胃痙攣
          • 兄弟們你們都做胃鏡了嗎開的啥藥?有什么養(yǎng)胃秘方啊?請賜教啊!
          • --我也進來了
          • 2.?re: 胃痙攣
          • @痛啊
            我感覺比生孩子還疼,生孩子還能有意識呢!這種疼還叫不出來連說話的力氣都沒了
          • --我也進來了
          • 3.?re: 胃痙攣
          • 評論內容較長,點擊標題查看
          • --我也進來了
          • 4.?re: 胃痙攣
          • 我都周期性的發(fā)作,算來有4年了 。每年最少一次,一次最少2天。吃了好多藥就差沒去做胃鏡了。 剛剛發(fā)作就隨便煮了點姜湯喝下就好了些,不知道還會不會發(fā)作了。
          • --許家洛
          • 5.?re: 胃痙攣
          • 我昨晚也疼的要死。。上次疼的直接120送醫(yī)院了,一上120我竟然就不疼了,醫(yī)院里掉了瓶鹽水就放回家了。這次正好國外旅游中,幾乎疼了一整晚,整個在床上翻滾狀態(tài)了。今天不疼了,就是整個人難受。。。求助阿
          • --胃疼
          • 6.?re: [Swing]在 JFileChooser 中進行文件驗證的小技巧
          • 輸入*還是會有問題
          • --ngh
          • 7.?re: 胃痙攣[未登錄]
          • 昨晚一夜的身不如死的感覺,胃痙攣兄不要來了吧 ,求你了
          • --李飛
          • 8.?re: 胃痙攣
          • 評論內容較長,點擊標題查看
          • --daidai
          • 9.?re: 胃痙攣
          • 評論內容較長,點擊標題查看
          • --痛啊
          • 10.?re: 胃痙攣
          • 媽啊 痛的快死了~!第一次感覺過這樣的痛啊~!和女的生孩子有的一比了吧~!哭哭哭~!
          • --痛啊

          閱讀排行榜

          主站蜘蛛池模板: 海林市| 安阳市| 临泽县| 海兴县| 万全县| 淮滨县| 绥棱县| 渝北区| 清水河县| 尼木县| 石河子市| 曲阳县| 乌兰察布市| 西贡区| 宜宾县| 酒泉市| 鄯善县| 朝阳区| 黔西县| 咸阳市| 民权县| 苏尼特右旗| 黄龙县| 深泽县| 乐山市| 宜春市| 大关县| 溧阳市| 色达县| 卢龙县| 婺源县| 南江县| 漠河县| 安塞县| 康保县| 海盐县| 渑池县| 高要市| 衡东县| 东兴市| 耒阳市|