欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

java指南之使用圖形:使用圖像(轉(zhuǎn))-創(chuàng)新互聯(lián)

使用圖像
這是一個圖像:
下面的幾頁將提供使用圖像所需要的詳細資料,你將學會如何加載、顯示和操縱它們。
--------------------------------------------------------------------------------
等等!: 雖然這節(jié)描述的API對JDK 1.1 和 Java 2 (JDK 1.2)都是有效的,但是我們還是推薦你使用Swing內(nèi)建的 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包提供可用于創(chuàng)建、操縱和觀察圖像的接口和類。
加載圖像
AWT可以很簡單的加載兩種格式的圖像: GIF 和 JPEG。Applet和Toolkit 類提供了getImage 方法可以使用那兩種格式。像這樣使用:
myImage = getImage(URL); //只能在Applet 子類里
或者
myImage = Toolkit.getDefaultToolkit().getImage(filenameOrURL);
getImage 立即返回,因此你不必等待圖像加載完而可以直接在你的程序中執(zhí)行其它的操作。雖然這可以提高性能,但是有效程序需要更多的控制或者有關(guān)圖像的更多信息。你可以通過使用MediaTracker類或者實現(xiàn)ImageObserver接口中定義的imageUpdate方法跟蹤圖像的加載。
這一節(jié)也將告訴你如何輕松的使用MemoryImageSource類創(chuàng)建圖像。
顯示圖像
通過傳遞到paintComponent方法的Graphics對象可以很容易的顯示圖像。你簡單的在Graphics 對象上調(diào)用一個drawImage方法就可以。例如:
g.drawImage(myImage, 0, 0, this);
這一節(jié)解釋drawImage的四種形式,其中的兩種可以進行圖像的縮放。像getImage一樣,drawImage 也是異步的,即使圖像還沒有被全部加載或繪制也立即返回。
加載圖像
這一節(jié)描述如何得到一個圖像對應的Image 對象。只要圖像數(shù)據(jù)在一個 GIF 或者 JPEG 格式文件里面而且你知道它的文件名或者URL,那么從它得到一個Image 就很簡單:只要使用Applet 或者 Toolkit 中的一個的getImage方法就就可以。getImage 方法立即返回,不檢查圖像數(shù)據(jù)是否存在。實際的圖像加載通常直到程序第一次繪制圖像時才進行。
對于很多程序,這個不可見的后臺加載工作工作得很好。否則需要跟蹤圖像的加載過程。這一節(jié)解釋如何使用MediaTracker 類和ImageObserver 接口達到目的。
--------------------------------------------------------------------------------
注意: ImageIcon 類自動使用一個MediaTracker 加載自己的圖像。
--------------------------------------------------------------------------------
最后,這節(jié)告訴你如何使用一個像MemoryImageSource這樣的類輕松的創(chuàng)建一個圖像。
使用getImage方法
這節(jié)首先討論Toolkit 的getImage方法,然后才是Applet 的getImage 方法。
Toolkit 明了兩個getImage 方法:
Image getImage(URL url)
Image getImage(String filename)
下面是使用Toolkit的getImage 方法的幾個例子。雖然每個Java程序和applet都可以使用這些方法, 但是 applets受通常的安全限制。特別的,不被信任的applets 不能成功的為getImage指定一個文件名,因為不被信任的applets不能從本機文件系統(tǒng)加載數(shù)據(jù)。你可以從 安全限制找到有關(guān)不被信任的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)下才能工作。因為這個原因,這些方法在構(gòu)造方法或者在一個聲明一個實例變量的申明里面不能工作。你應該從一個像init這樣的方法里面調(diào)用getImage。
下面的代碼范例演示了如何使用Applet 的code>getImage 方法。參考 使用AWT創(chuàng)建一個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 類對于很多程序是足夠的。你僅僅需要創(chuàng)建一個MediaTracker 實例,告訴它跟蹤一個或者多個圖像,然后如果需要的話向MediaTracker 查詢那些圖像的狀態(tài)。在 提高圖像動畫的外觀和性能里面有一個范例的解釋。
動畫范例展示了MediaTracker的兩個特別有用的特性:請求一組圖像數(shù)據(jù)的加載并且等待它們完成加載。請求一組圖像數(shù)據(jù)加載可以使用checkID和checkAll 的帶一個布爾參數(shù)的形式。將參數(shù)設(shè)置為 true可以開始加載任何還未被加載的圖像?;蛘吣憧梢哉埱蠹虞d圖像然后使用waitForID和waitForAll方法等待。
ImageObserver 接口可以運行你進行比MediaTracker更緊密的跟蹤。 Component 類使用它,因此組件在它們要顯示的圖像被加載后進行重新繪制。為了使用 ImageObserver 接口,你需要實現(xiàn)ImageObserver的 imageUpdate 方法并且確保實現(xiàn)的對象被注冊為一個圖像觀察器。通常,這個注冊發(fā)生在你為drawImage方法指定一個ImageObserver,就像在稍后一節(jié)描述的那樣。 imageUpdate 方法在圖像的信息可見的任何時候被調(diào)用。
如果你瀏覽MediaTracker API 文檔,你可能會注意到 Component 類定義了兩個看上去有用的方法: checkImage 和 prepareImage。MediaTracker 類在很大程度上使得這些方法是不必要的。
用MemoryImageSource創(chuàng)建圖像
在像 MemoryImageSource 類這樣的圖像生產(chǎn)者的幫助下,你可以從你的幸手涂鴉上構(gòu)造圖像。下面的代碼范例打算創(chuàng)建一個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));
顯示圖像
下面的代碼在組件區(qū)域的左上角(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值,雖然這個值很少被使用。如果圖像圖像已經(jīng)被完全加載并且因此被完全繪制,返回值是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 方法有下面的參數(shù):
Image img
需要繪制的圖像。
int x, int y
圖像左上角坐標。
int width, int height
圖像的寬度和高度(單位為象素)。
Color bgcolor
圖像下面的顏色。如果圖像包含透明象素時這會有用,圖像將在指定顏色背景下顯示。
ImageObserver observer
一個實現(xiàn)ImageObserver 接口的對象。它將該對象登記為一個圖像觀察者,因此當圖像的任何新信息可見時它被通知。大多組件可以簡單的指定this。
組件可以指定this作為圖像觀察者的原因是Component 類實現(xiàn)了ImageObserver 接口。當圖像數(shù)據(jù)被加載時它的實現(xiàn)調(diào)用repaint方法,這通常是你所期望的。
drawImage 方法只要要顯示的圖像數(shù)據(jù)已經(jīng)加載完就返回。如果你要確保drawImage只繪制完整的圖像,那么你需要跟蹤圖像的加載。參考 上一頁獲取跟蹤圖像加載的信息。[@more@]

分享名稱:java指南之使用圖形:使用圖像(轉(zhuǎn))-創(chuàng)新互聯(lián)
標題路徑:http://aaarwkj.com/article26/iohcg.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供手機網(wǎng)站建設(shè)、外貿(mào)網(wǎng)站建設(shè)、關(guān)鍵詞優(yōu)化、靜態(tài)網(wǎng)站、做網(wǎng)站、企業(yè)網(wǎng)站制作

廣告

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

成都網(wǎng)站建設(shè)公司
色呦呦一区二区三区视频| 久久99热婷婷精品一区| 在线免费观看欧美黄片| 一本色桃子精品久久中文字幕| 精品日韩欧美精品日韩| 国产丝袜美腿诱惑久久| 中文字幕日韩午夜精品| 人人爽久久爱夜夜躁一区| 97色伦综合在线欧美| av一区二区三区网站| 亚洲乱色熟女一区二区三区麻豆| 国产精品区一区二区三区| 水蜜桃在线观看一区二区国产| 不卡的视频在线观看| 亚洲理论电影在线观看| 久久中文人妻丝袜不卡| 欧美亚洲另类色自拍偷拍| 国产熟女碰碰人人a久久| 加勒比中文字幕日本道| 精品一二三四五区亚洲乱码| 欧美日韩一区精品视频| 国产精品伊人久久精品| 国产精品久久午夜伦鲁鲁| 日韩电影在线播放中文字幕| 国产高清成人小视频在线| 夫妻的世界电影完整版| 日韩高清有码一区二区| 日韩欧美黄片一区二区三区| 日韩少妇黄色在线观看| 先锋影音女同中文字幕| 日本黄色录像黄色录像| 人妻熟妇一区二区三区成人| 亚洲av少妇一区二区成年男人| 97超碰国产在线观看| 一欧美一区二区三区| 五月婷婷六月丁香伊人妞| av第一福利大全导航| 国产一区二区三区自拍| 国产乱国产乱老熟部视频| 国产另类极品熟女露脸自拍| 夫妻过性生活视频播放|