久久99久久人婷婷精品综合_超碰aⅴ人人做人人爽欧美_亚洲电影第三页_日韩欧美一中文字暮专区_波多野结衣的一区二区三区_婷婷在线播放_人人视频精品_国产精品日韩精品欧美精品_亚洲免费黄色_欧美性猛交xxxxxxxx

java指南之使用圖形:使用圖像(轉)-創新互聯

使用圖像
這是一個圖像:
下面的幾頁將提供使用圖像所需要的詳細資料,你將學會如何加載、顯示和操縱它們。
--------------------------------------------------------------------------------
等等!: 雖然這節描述的API對JDK 1.1 和 Java 2 (JDK 1.2)都是有效的,但是我們還是推薦你使用Swing內建的 icon 支持來代替。如果Swing的圖標不能滿足要求,而且你為Java 2寫程序,那么考慮使用Java 2D API,它在 2D 圖形 教材中有描述。
--------------------------------------------------------------------------------
圖像使用的支持分布于java.applet, java.awt, 和 java.awt.image 包中。每一個圖像都用一個java.awt.Image 對象表示。除了Image 類外,java.awt 包提供了其它的基本的圖像支持,例如Graphics 類的drawImage 方法,Toolkit 對象的getImage 方法以及MediaTracker 類。在java.applet包中,Applet 類的getImage 方法使得可以很容易的使用URL加載圖像。最后,java.awt.image包提供可用于創建、操縱和觀察圖像的接口和類。
加載圖像
AWT可以很簡單的加載兩種格式的圖像: GIF 和 JPEG。Applet和Toolkit 類提供了getImage 方法可以使用那兩種格式。像這樣使用:
myImage = getImage(URL); //只能在Applet 子類里
或者
myImage = Toolkit.getDefaultToolkit().getImage(filenameOrURL);
getImage 立即返回,因此你不必等待圖像加載完而可以直接在你的程序中執行其它的操作。雖然這可以提高性能,但是有效程序需要更多的控制或者有關圖像的更多信息。你可以通過使用MediaTracker類或者實現ImageObserver接口中定義的imageUpdate方法跟蹤圖像的加載。
這一節也將告訴你如何輕松的使用MemoryImageSource類創建圖像。
顯示圖像
通過傳遞到paintComponent方法的Graphics對象可以很容易的顯示圖像。你簡單的在Graphics 對象上調用一個drawImage方法就可以。例如:
g.drawImage(myImage, 0, 0, this);
這一節解釋drawImage的四種形式,其中的兩種可以進行圖像的縮放。像getImage一樣,drawImage 也是異步的,即使圖像還沒有被全部加載或繪制也立即返回。
加載圖像
這一節描述如何得到一個圖像對應的Image 對象。只要圖像數據在一個 GIF 或者 JPEG 格式文件里面而且你知道它的文件名或者URL,那么從它得到一個Image 就很簡單:只要使用Applet 或者 Toolkit 中的一個的getImage方法就就可以。getImage 方法立即返回,不檢查圖像數據是否存在。實際的圖像加載通常直到程序第一次繪制圖像時才進行。
對于很多程序,這個不可見的后臺加載工作工作得很好。否則需要跟蹤圖像的加載過程。這一節解釋如何使用MediaTracker 類和ImageObserver 接口達到目的。
--------------------------------------------------------------------------------
注意: ImageIcon 類自動使用一個MediaTracker 加載自己的圖像。
--------------------------------------------------------------------------------
最后,這節告訴你如何使用一個像MemoryImageSource這樣的類輕松的創建一個圖像。
使用getImage方法
這節首先討論Toolkit 的getImage方法,然后才是Applet 的getImage 方法。
Toolkit 明了兩個getImage 方法:
Image getImage(URL url)
Image getImage(String filename)
下面是使用Toolkit的getImage 方法的幾個例子。雖然每個Java程序和applet都可以使用這些方法, 但是 applets受通常的安全限制。特別的,不被信任的applets 不能成功的為getImage指定一個文件名,因為不被信任的applets不能從本機文件系統加載數據。你可以從 安全限制找到有關不被信任的applets的限制方面資料.
Toolkit toolkit = Toolkit.getDefaultToolkit();
Image image1 = toolkit.getImage("imageFile.gif");
Image image2 = toolkit.getImage(
new URL("/tupian/20230522/404.html />
Applet類提供兩個getImage 方法:
Image getImage(URL url)
Image getImage(URL url, String name)
只有applets 可以使用Applet 的getImage 方法。而且Applet 的getImage 方法只有在完整的背景(AppletContext)下才能工作。因為這個原因,這些方法在構造方法或者在一個聲明一個實例變量的申明里面不能工作。你應該從一個像init這樣的方法里面調用getImage。
下面的代碼范例演示了如何使用Applet 的code>getImage 方法。參考 使用AWT創建一個GUI 得到getCodeBase和getDocumentBase 方法的解釋。
//在Applet子類的一個方法里:
Image image1 = getImage(getCodeBase(), "imageFile.gif");
Image image2 = getImage(getDocumentBase(), "anImageFile.jpeg");
Image image3 = getImage(
new URL("/tupian/20230522/404.html />
請求和跟蹤圖像加載: MediaTracker 和 ImageObserver
你可以以兩種方法跟蹤圖像加載: MediaTracker 類和 ImageObserver 接口。 MediaTracker 類對于很多程序是足夠的。你僅僅需要創建一個MediaTracker 實例,告訴它跟蹤一個或者多個圖像,然后如果需要的話向MediaTracker 查詢那些圖像的狀態。在 提高圖像動畫的外觀和性能里面有一個范例的解釋。
動畫范例展示了MediaTracker的兩個特別有用的特性:請求一組圖像數據的加載并且等待它們完成加載。請求一組圖像數據加載可以使用checkID和checkAll 的帶一個布爾參數的形式。將參數設置為 true可以開始加載任何還未被加載的圖像。或者你可以請求加載圖像然后使用waitForID和waitForAll方法等待。
ImageObserver 接口可以運行你進行比MediaTracker更緊密的跟蹤。 Component 類使用它,因此組件在它們要顯示的圖像被加載后進行重新繪制。為了使用 ImageObserver 接口,你需要實現ImageObserver的 imageUpdate 方法并且確保實現的對象被注冊為一個圖像觀察器。通常,這個注冊發生在你為drawImage方法指定一個ImageObserver,就像在稍后一節描述的那樣。 imageUpdate 方法在圖像的信息可見的任何時候被調用。
如果你瀏覽MediaTracker API 文檔,你可能會注意到 Component 類定義了兩個看上去有用的方法: checkImage 和 prepareImage。MediaTracker 類在很大程度上使得這些方法是不必要的。
用MemoryImageSource創建圖像
在像 MemoryImageSource 類這樣的圖像生產者的幫助下,你可以從你的幸手涂鴉上構造圖像。下面的代碼范例打算創建一個100x100的圖像表示一個沿X軸的從黑到藍的漸變和沿Y軸的從黑到紅的漸變。
int w = 100;
int h = 100;
int[] pix = new int[w * h];
int index = 0;
for (int y = 0; y < h; y++) {
int red = (y * 255) / (h - 1);
for (int x = 0; x < w; x++) {
int blue = (x * 255) / (w - 1);
pix[index++] = (255 << 24) | (red << 16) | blue;
}
}
Image img = createImage(new MemoryImageSource(w, h, pix, 0, w));
顯示圖像
下面的代碼在組件區域的左上角(0, 0)以原始大小顯示一個圖像:
g.drawImage(image, 0, 0, this);
下面的代碼在坐標(90, 0)處顯示一個被縮放為300象素寬62象素高的圖像:
g.drawImage(myImage, 90, 0, 300, 62, this);
下面的代碼片斷展示了一個applet加載一個圖像并且兩次顯示它,使用上面你看到的兩個片斷。你可以在 ImageDisplayer.java找到完整的的代碼。
這個圖片是該applet的GUI。要運行那個applet,單擊圖片。該applet將在一個新瀏覽窗口顯示。
Graphics 類聲明了下面的 drawImage 方法。它們都返回一個boolean值,雖然這個值很少被使用。如果圖像圖像已經被完全加載并且因此被完全繪制,返回值是true;否則,返回值是false。
boolean drawImage(Image img, int x, int y, ImageObserver observer)
boolean drawImage(Image img, int x, int y, int width, int height, ImageObserver observer)
boolean drawImage(Image img, int x, int y, Color bgcolor, ImageObserver observer)
boolean drawImage(Image img, int x, int y, int width, int height, Color bgcolor, ImageObserver observer)
drawImage 方法有下面的參數:
Image img
需要繪制的圖像。
int x, int y
圖像左上角坐標。
int width, int height
圖像的寬度和高度(單位為象素)。
Color bgcolor
圖像下面的顏色。如果圖像包含透明象素時這會有用,圖像將在指定顏色背景下顯示。
ImageObserver observer
一個實現ImageObserver 接口的對象。它將該對象登記為一個圖像觀察者,因此當圖像的任何新信息可見時它被通知。大多組件可以簡單的指定this。
組件可以指定this作為圖像觀察者的原因是Component 類實現了ImageObserver 接口。當圖像數據被加載時它的實現調用repaint方法,這通常是你所期望的。
drawImage 方法只要要顯示的圖像數據已經加載完就返回。如果你要確保drawImage只繪制完整的圖像,那么你需要跟蹤圖像的加載。參考 上一頁獲取跟蹤圖像加載的信息。[@more@]

分享名稱:java指南之使用圖形:使用圖像(轉)-創新互聯
標題路徑:http://www.js-pz168.com/article26/iohcg.html

成都網站建設公司_創新互聯,為您提供手機網站建設外貿網站建設關鍵詞優化靜態網站做網站企業網站制作

廣告

聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯

成都網站建設公司
久久99久久人婷婷精品综合_超碰aⅴ人人做人人爽欧美_亚洲电影第三页_日韩欧美一中文字暮专区_波多野结衣的一区二区三区_婷婷在线播放_人人视频精品_国产精品日韩精品欧美精品_亚洲免费黄色_欧美性猛交xxxxxxxx
国产精品乡下勾搭老头1| 精品日本一区二区| 欧美高清视频一区| 欧美亚洲一区二区在线| 久久久精品2019中文字幕之3| 亚洲欧洲制服丝袜| 韩国v欧美v日本v亚洲v| 91色乱码一区二区三区| 午夜精品一区二区三区在线观看 | 六月丁香综合在线视频| 91免费观看在线| 伊人狠狠色丁香综合尤物| 欧美变态口味重另类| 亚洲激情综合网| 色偷偷久久人人79超碰人人澡| 日韩一区二区电影在线| 亚洲欧美日韩中文播放| 国产一区在线看| 国内成+人亚洲| 欧美日韩一区二区三区免费看| 欧美国产精品v| 久久 天天综合| 久久99导航| 91精品免费观看| 亚洲黄色免费电影| 成人精品亚洲人成在线| 亚洲欧洲精品一区二区三区波多野1战4| 欧美高清视频一二三区| 夜夜爽夜夜爽精品视频| 北岛玲一区二区三区四区| 香蕉久久免费影视| 国产人成一区二区三区影院| 蜜桃视频在线一区| 久久国产精品 国产精品| 91精品国产综合久久久久久久| 亚洲精品成人悠悠色影视| 成人美女视频在线看| 亚洲国产高清国产精品| 日本一区二区免费在线| 国内精品国产三级国产a久久| 欧美精品国产精品久久久 | 91视频国产观看| 91福利视频网站| 亚洲男同性恋视频| 91在线云播放| 欧美另类高清zo欧美| 亚洲综合视频网| 超碰97在线人人| 欧美一区二区视频观看视频| 天堂影院一区二区| 精品免费国产| 2014亚洲片线观看视频免费| 久久精品国产77777蜜臀| 日韩久久不卡| 日本一区二区视频在线| 国产精品1区2区| 色激情天天射综合网| 一区二区三区在线观看网站| 91视频www| 欧美一级高清片| 麻豆精品视频在线| 日韩欧美精品在线不卡| 中文一区二区在线观看| 成人av电影在线网| 7777精品伊人久久久大香线蕉的| 五月天一区二区| 快播亚洲色图| 国产蜜臀av在线一区二区三区| 国产成人丝袜美腿| 欧美在线视频不卡| 石原莉奈在线亚洲二区| 欧美另类网站| 国产精品久久久久久户外露出 | 欧美激情资源网| 成人精品高清在线| 欧美精品xxxxbbbb| 男女激情视频一区| 亚洲激情图片| 亚洲黄色录像片| 久久久久久久久久久久久9999| 久久久久久久久久美女| 波波电影院一区二区三区| 91精品国产一区二区| 麻豆91精品视频| 在线这里只有精品| 婷婷国产v国产偷v亚洲高清| 青青影院一区二区三区四区| 亚洲欧美中日韩| 狠狠爱一区二区三区| 国产精品乱码一区二三区小蝌蚪| www日韩av| 国产免费成人在线视频| 99精品在线直播| 国产视频一区在线观看| av不卡在线观看| 精品久久久三级丝袜| 成人在线视频一区| 精品日韩在线一区| 不卡的av在线播放| 精品国产乱码久久久久久牛牛| 成人国产在线观看| 精品少妇一区二区三区在线播放| 国产98色在线|日韩| 欧美电影免费观看高清完整版在线 | 丁香婷婷综合五月| 日韩免费在线观看| 成人激情免费视频| 日韩你懂的电影在线观看| 大尺度一区二区| 欧美zozo另类异族| 99国产精品久久久久久久久久| 久久婷婷久久一区二区三区| 91视频在线观看免费| 欧美高清一级片在线观看| 国产精品久久久久久久小唯西川| 国产精品私房写真福利视频| 狠狠色噜噜狠狠狠狠色吗综合| 亚洲人成网站在线| 欧美在线日韩精品| 亚洲成人av在线电影| 一本一道久久a久久精品| 日本vs亚洲vs韩国一区三区二区 | 欧美一区二区视频17c| 亚洲不卡av一区二区三区| 在线丝袜欧美日韩制服| 麻豆精品一区二区三区| 7777精品伊人久久久大香线蕉| 成人美女视频在线观看18| 国产亚洲综合av| 久久99精品久久久久久久青青日本 | 欧美日韩电影在线| 国产盗摄视频一区二区三区| 精品国产乱码久久久久久牛牛| 97人人做人人人难人人做| 136国产福利精品导航| 天堂√在线观看一区二区| 蜜乳av一区二区三区| 欧美一级二级在线观看| 91免费观看| 一区二区三区在线影院| 色噜噜狠狠色综合中国| 国产一区二区三区视频在线播放| 欧美成人性战久久| 国产二区一区| 亚洲电影你懂得| 欧美色图激情小说| av一区二区三区黑人| 亚洲欧洲精品一区二区三区不卡| 日韩欧美在线观看强乱免费| 蜜臀久久99精品久久久久宅男 | 一区二区三区视频| 国产自产视频一区二区三区| 久久综合九色综合欧美就去吻| 久久久一本精品99久久精品66| 婷婷综合久久一区二区三区| 欧美日本一区二区在线观看| 91麻豆高清视频| 亚洲激情校园春色| 欧美日韩高清影院| 99在线视频播放| 亚洲国产sm捆绑调教视频| 欧美高清视频在线高清观看mv色露露十八| 91麻豆123| 亚洲综合999| 欧美一级欧美三级在线观看| 国产精品视频免费一区| 三级不卡在线观看| 91麻豆国产香蕉久久精品| 亚洲制服丝袜av| 欧美一区二区三区视频免费播放 | 国产精品一区久久久久| 国产精品美女视频| 色老头久久综合| 91免费版pro下载短视频| 亚洲国产欧美另类丝袜| 4438x亚洲最大成人网| 精品在线观看一区二区| 久久精品国产成人一区二区三区 | 欧美老肥妇做.爰bbww| 国产成人一区二区三区免费看| 午夜av一区二区三区| www国产精品av| 一区国产精品| 99国产欧美另类久久久精品| 亚洲二区在线视频| 欧美精品一区二区不卡 | 91精品免费在线| 免费试看一区| 国产91丝袜在线播放九色| 一区二区三区成人在线视频| 91精品欧美久久久久久动漫| 欧美凹凸一区二区三区视频 | 超碰97在线播放| 蜜臀99久久精品久久久久久软件| 国产欧美日韩卡一| 欧美在线free| 精品久久久久久中文字幕动漫| 国产一区二区三区四区五区美女| 成人免费一区二区三区视频 | 亚洲三级久久久|