自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

AWT和Swing顯示GIF 動(dòng)畫

開發(fā) 后端
本文介紹AWT和Swing組件可以直接通過 Graphics.drawImage() 來顯示 GIF 動(dòng)畫, 但是一直不太做界面程序。

很早就知道AWT和Swing組件可以直接通過 Graphics.drawImage() 來顯示 GIF 動(dòng)畫, 但是一直不太做界面程序, 也就沒有仔細(xì)用過.

現(xiàn)在做 WoW Traverser, 因?yàn)樾薷氖钱惒教峤坏椒?wù)器, 所以有必要對(duì)正在提交的更改進(jìn)行界面提示, 打算做個(gè)黃色alpha混和的漸變閃動(dòng)效果來實(shí)現(xiàn), 于是第一反應(yīng)是做一個(gè)透明度不斷變化的純黃色GIF, 畫到界面上去.

但是用GIMP總是做出來效果不對(duì), 于是想干脆自己寫程序?qū)崿F(xiàn), 反正就是加個(gè)黃色的混和, 利用AWT和Swing顯示GIF相同的機(jī)制, 效率和穩(wěn)定性應(yīng)該也不會(huì)差. 最后花了一天時(shí)間研究AWT和Swing的動(dòng)畫機(jī)制.

雖然也了解了一些原本不知道的細(xì)節(jié), 但是結(jié)果還是讓我很失望, 原來drawImage時(shí)就是把當(dāng)前Component注冊(cè)為該圖片的ImageObserver, 這樣GIF的下一幀到了需要顯示的時(shí)間時(shí), 通過 imageUpdated() 通知這個(gè)組件, 最終是在 java.awt.Component.imageUpdated() 中處理這個(gè)問題. 令人非常失望的是, Java都到了1.5了, AWT中這個(gè)地方的處理還是那么蹩腳, 它只是檢查了一下更新頻率有沒有超過系統(tǒng)規(guī)定的上限, 只要沒超過, 那么它就對(duì)Component發(fā)一個(gè)完全的repaint()請(qǐng)求, 甚至都沒有去計(jì)算該圖片的覆蓋區(qū)域, 設(shè)置一個(gè)Clip區(qū)域以減少不必要的繪圖操作.

更甚者, 即使之后你不再顯示這個(gè)GIF了, AWT也不會(huì)自動(dòng)從這個(gè)『曾經(jīng)』顯示的圖片的ImageObserver列表中去掉這個(gè)Component, 最終導(dǎo)致的結(jié)果, 就是即使不再顯示那個(gè)GIF, 這個(gè)Component還是會(huì)以那個(gè)GIF的刷新頻率不斷的毫無必要的去repaint() !! 這不但蹩腳, 簡直都有點(diǎn)齷齪.

而且費(fèi)了半天勁, 連手工去取消ImageObserver的接口都沒有找到, 也就是說: 如果不是永久性的顯示一個(gè)GIF, 千萬不要通過java.awt.Toolkit.createImage() 構(gòu)造 GIF 的 java.awt.Image對(duì)象然后往你自己的Component上畫, 否則這個(gè)GIF圖片將長時(shí)間占用內(nèi)存以及 ImageFetcher 線程的CPU資源, 同時(shí)耗費(fèi)CPU時(shí)間和GUI資源用來絲毫沒有必要的反復(fù)repaint你的Component.

【編輯推薦】

  1. 在表格中Swing增加列表框
  2. 淺談Swing控件JList
  3. 概述Swing組件與外部線程
  4. Java Swing做什么好
  5. Swing文件選擇器的制作
責(zé)任編輯:佚名 來源: 電子工業(yè)出版社
相關(guān)推薦

2009-07-17 11:13:46

AWT和SwingSwing組件

2009-07-10 17:20:38

Swing構(gòu)件AWT構(gòu)件

2009-07-14 15:01:02

AWT和Swing

2009-07-10 17:03:17

AWT組件Swing組件

2009-07-16 13:37:33

Swing和AWT

2009-07-15 16:39:51

AWT和Swing

2009-07-17 10:11:55

AWT和Swing

2009-07-17 09:36:14

SWT和Swing的區(qū)

2009-07-17 15:30:30

JFaceAWT和SWTSwing

2009-07-17 09:07:20

2009-07-17 10:01:14

Swing和AWT

2009-07-14 12:58:49

AWT和Swing

2009-07-10 15:41:27

Swing AWT

2009-07-14 15:12:36

SwingSWT和AWT

2009-07-17 10:25:41

AWT和SwingSWT

2009-07-17 09:55:02

事件監(jiān)聽器SWT和SwingAWT

2011-08-29 17:17:00

Android應(yīng)用gif快手iPhone應(yīng)用

2009-07-17 09:44:28

Look And Fe布局管理器SWT和Swing

2011-05-04 15:21:20

swing

2011-04-15 17:33:39

SWINGAWT
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)