国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

如何加載并顯示較大的圖形文件?

2019-11-18 13:24:28
字體:
來源:轉載
供稿:網友

   在The Java Tutorial -> Creating a GUI with JFC/Swing中,我們看到加載并在一
   個Graphics對象上顯示一個圖形文件的步驟如下:
  
   Toolkit toolkit = Toolkit.getDefaultToolkit();
   Image image1 = toolkit.getImage("imageFile.gif");
   g.drawImage(myImage, 0, 0, this);
  
   當你所需要顯示的圖形文件不大的時候,這樣的做法似乎沒有什么問題。但是,當你
   第一次顯示一幅很大的圖形時,是不是看見你的圖形界面閃爍了好久才顯示出圖形來
   呢?很郁悶是吧?java 2D Graphics不是缺省的是用雙緩沖技術么?為什么還會出現
   這種閃爍呢?
  
   造成這種現象的原因是:Image 對象的家載是通過一個線程來進行的,當虛擬機剛剛
   執行完toolkit.getImage()語句的時候,新創建的Image 對象實際上還在不斷的更新
   之中,假如這時候調用g.drawImage()來顯示該圖形,那么該Image對象每更新一次,
   系統就將該圖形重新畫一次,這就是為什么圖形界面會出現閃爍的原因。
  
   那么,我先做點別的事情,然后再來顯示這個圖形,總該可以了吧。試試下面這一段
   程序怎么樣?
  
   Toolkit toolkit = Toolkit.getDefaultToolkit();
   Image image1 = toolkit.getImage("imageFile.gif");
   {
   // Do something for 10 seconds
   }
   g.drawImage(myImage, 0, 0, this);
  
   呵呵,似乎效果還是不行耶。即使是你在那里灌水灌到被封全站3 個月,這個討厭的
   閃爍還是在哪里。原因很簡單,負責加載圖形的是一個低優先權線程,你在那里占用
   著CPU 時間,它怎么可能會干活呢?你在那里覺覺10秒鐘Thread.sleep()試試看,是
   不是乖好多了呢?
  
   很顯然,我們不能夠每加載一個圖形文件就在那里覺覺10秒鐘,不然的話飯碗早就丟
   掉了。我們需要做的,是等待圖像加載完成,這個加載一完成就得馬上開始干活。因
   此,我們需要一個waitForImage()方法。一個可用的waitForImage()方法如下,其中
   的Component可以是你的JFrame對象,把你的覺覺10秒鐘換成waitForImage() 就可以
   向老板請求加薪啦。
  
   public static boolean waitForImage(Image image, Component c)
   {
   MediaTracker tracker = new MediaTrracker(c);
   tracker.addImage(image, 0);
   try
   {
   tracker.waitForAll();
   } catch(InterruptedException e) {}
   return (!tracker.isErrorAny());
   }
  
   假如你愿意使用最少的代碼實現還算不賴的效果,那么下面的代碼斷也可以滿足你的
   要求。至于這里面的原因嘛,偶現在打字比較慢,你自己好好想想吧。
  
   Toolkit toolkit = Toolkit.getDefaultToolkit();
   Image image1 = toolkit.getImage("imageFile.gif");
   JLabel NullLabel = new JLabel(new ImageIcon(image1));
   g.drawImage(myImage, 0, 0, this);

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 获嘉县| 石景山区| 涡阳县| 文水县| 朝阳区| 海阳市| 武川县| 贵州省| 武乡县| 穆棱市| 客服| 卓资县| 鸡泽县| 新营市| 宾川县| 雷波县| 田东县| 盱眙县| 安国市| 阳江市| 延寿县| 会泽县| 五常市| 龙南县| 任丘市| 来安县| 清新县| 忻城县| 沧源| 东光县| 晋州市| 贵阳市| 浦江县| 龙岩市| 库尔勒市| 拜城县| 汤阴县| 泊头市| 兴城市| 临湘市| 双江|