日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

Java對(duì)多媒體的支持

 ShangShujie 2007-05-15

 

第4章 Java對(duì)多媒體的支持

  Java語(yǔ)言的內(nèi)置類庫(kù)對(duì)多媒體技術(shù)的支持能力相當(dāng)強(qiáng),尤其是對(duì)文本、圖形、圖像、聲音等媒體的處理與展示均提供了極其方便而又豐富的接口。更 令人興奮不已的是,綜合運(yùn)用這些媒體所編制出來(lái)的一個(gè)個(gè)Java小應(yīng)用程序(Applet),使向來(lái)冷冰冰的靜態(tài)的Web主頁(yè)(Homepage)上居然 展現(xiàn)出一番熱熱鬧鬧的動(dòng)態(tài)的新景觀,這便是著名的Java動(dòng)畫。在這一章里,我們就將進(jìn)入到Java多姿多彩的多媒體世界


  

如何利用Java的繪圖方法來(lái)繪制各式各樣圖形以及顯示各種文本字體,并配以所喜愛(ài)顏色,可以說(shuō)是Java多媒體技術(shù)中的一項(xiàng)基本功,也是這一節(jié)將要介紹的主要內(nèi)容。

  

  Java語(yǔ)言的類庫(kù)中提供了豐富的繪圖方法(method),其中大部分對(duì)圖形、文本、圖像(image)的操作方法都定義在Graphics 類中。我們已經(jīng)知道,Graphics類又是java.awt程序包的一部分,因此,每當(dāng)我們要進(jìn)行圖形、文本、圖像的處理時(shí),不要忘了在Java源文件 的頭部先寫上:

  import java.awt.Graphics;

  在這里要特別指出的是,當(dāng)我們想要在屏幕上繪制圖形、文本、圖像時(shí),并不需要直接使用new來(lái)產(chǎn)生一個(gè)Graphics類的對(duì)象實(shí)例,而在java.awt.Applet類的paint( )方法(見上一章)中,我們已經(jīng)得到了一個(gè)Graphics對(duì)象的引用,這是系統(tǒng)直接將生成好的Graphics對(duì)象通過(guò)參數(shù)形式傳遞給paint( )方法。因此,我們只要在這個(gè)對(duì)象上進(jìn)行圖形、文本及圖像的繪制操作,就可以在屏幕上看到所顯示的結(jié)果。

  1. 圖形坐標(biāo)系統(tǒng)

  為了將某一圖形在屏幕上繪制出來(lái),我們首先要碰到的問(wèn)題也許就是“畫在哪個(gè)位置”,為了解決這個(gè)問(wèn)題就必須有一個(gè)精確的圖形坐標(biāo)系統(tǒng)來(lái)將該圖形定位。

  與大多數(shù)其它計(jì)算機(jī)圖形系統(tǒng)所采用的二維坐標(biāo)系統(tǒng)一樣,Java的坐標(biāo)原點(diǎn)(0,0)在屏幕的左上角,水平向右為X軸的正方向,豎直向下為Y軸 的正方向,每個(gè)坐標(biāo)點(diǎn)的值表示屏幕上的一個(gè)象素點(diǎn)的位置,因此,所有坐標(biāo)點(diǎn)的值都取整數(shù)。圖4-1表示用此圖形坐標(biāo)系統(tǒng)在屏幕上繪制一個(gè)矩形。

  2. 畫線

  在Java的Graphics類中提供畫線功能的是drawLine( )方法,其調(diào)用格式如下:

  drawLine(int x1,int y1,int x2,int y2)

  該方法需要設(shè)置四個(gè)參數(shù),其中x1,y1表示線段的一個(gè)坐標(biāo)點(diǎn),x2,y2表示線段的另一個(gè)坐標(biāo)點(diǎn)。如下面這段程序畫出兩條線段,其顯示結(jié)果如圖4-2所示。

  

  圖4-1 圖形坐標(biāo)系統(tǒng)

  1: import java.awt.Graphics;
2: public class Lines extends java.applet.Applet{
3: public void paint(Graphics g){
4: g.drawLine(30,30,70,70);
5: g.drawLine(60,50,60,50);
6: }
7: }

  

  圖4-2 一條線段與一個(gè)點(diǎn)

  由于Graphics類不專門提供畫點(diǎn)的方法,所以程序中第5行將線段的兩個(gè)點(diǎn)的坐標(biāo)均設(shè)為(60,50),因而就相當(dāng)于在此處畫了一個(gè)點(diǎn)。

  3. 矩形

  Graphics類中提供了三種類型的矩形,它們分別是普通矩形、圓角矩形和立體矩形。而每一種矩形都提供兩種不同風(fēng)格的方法,一種是僅畫出矩形的邊框;另一種是不僅畫出邊框,并且還用相同的顏色將整個(gè)矩形區(qū)域填滿。

  (1)普通矩形

  畫普通矩形需調(diào)用drawRect( )或fillRect( )方法,它們的調(diào)用格式如下:

  drawRect(int x, int y, int width, int height) //邊框型風(fēng)格
fillRect(int x, int y, int width, int height) //填充型風(fēng)格

  其中頭兩個(gè)參數(shù)分別表示矩形左上角的x坐標(biāo)和y坐標(biāo),后兩個(gè)參數(shù)分別表示矩形的寬度和高度。如下面的paint( )方法畫出兩個(gè)矩形,其顯示結(jié)果如圖4-2所示。

  public void paint(Graphics g){
g.drawRect(40,20,60,40);
g.fillRect(120,20,60,40);
}

  

  圖4-3 普通矩形的例子

  (2)圓角矩形

  圓角矩形,也就是矩形的四個(gè)頂角呈圓弧狀,每個(gè)圓弧其實(shí)是由四分之一的橢圓弧所構(gòu)成。畫圓角矩形的兩個(gè)方法的調(diào)用格式如下:

  drawRoundRect(int x, int y, int width, int height, int arcWidth, int arcHeight)
fillRoundRect(int x, int y, int width, int height, int arcWidth, int arcHeight)

  我們可以看出,它們除了具有和普通矩形含義相同的前四個(gè)參數(shù)外,還多了兩個(gè)用來(lái)述圓角性質(zhì)的參數(shù)。其中arcWidth代表了圓角弧的橫向直 徑;arcHeight代表了圓角弧的縱向直徑。例如圖4-4中左邊一個(gè)圓角矩形所設(shè)的圓角參數(shù)為(arcWidth=80, arcHeight=30),其效果就相當(dāng)于該圓角弧存在于一個(gè)長(zhǎng)40寬15的小矩形中;而右邊一個(gè)圓角矩形的圓角參數(shù)為(arcWidth=100, arcHeight=60),并且和整個(gè)圓角矩形的width和height參數(shù)值相等,因而該圓角矩形實(shí)際變成了一個(gè)橢圓。

  

  圖4-4 圓角矩形的參數(shù)設(shè)置

  下面的paint( )方法畫出三個(gè)圓角矩形,顯示效果如圖4-5所示。我們不難發(fā)現(xiàn),隨著arcWidth和arcHeight值的增大,矩形的圓角就越圓。

  public void paint(Graphics g){
g.drawRoundRect(20,20,80,60,20,20);
g.fillRoundRect(120,20,80,60,40,30);
g.drawRoundRect(220,20,80,60,60,40);}

  

  圖4-5 圓角矩形的例子

  (3)立體矩形

  立體矩形也可以說(shuō)是三維矩形。其實(shí),Java中的立體矩形并非真正的三維圖形,而僅僅是在矩形的邊框上增加一點(diǎn)陰影,使矩形看上去相對(duì)表平面好象有凸出或凹下的效果,其調(diào)用方法的格式如下:

  draw3DRect(int x, int y, int width, int height, boolean raised)
fill3DRect(int x, int y, int width, int height, boolean raised)

  這兩個(gè)方法中的前四個(gè)參數(shù)與drawRect( )方法中所用的參數(shù)含義是一樣的,第五個(gè)參raised便是定義該立體矩形是具有凸出(值為true)還是凹下(值為false)的效果。例如,下面的paint( )方法中,分別畫了一個(gè)凸出的和一個(gè)凹下的矩形。其顯示效果如圖4-6所示。確實(shí),由于Java立體矩形中的陰影實(shí)在太薄,立體效果當(dāng)然也就不太明顯,圖4-6右邊是一個(gè)放大了的凹角形狀。

  public void paint(Graphics g){
g.draw3DRect(20,20,80,60,true);
g.fill3DRect(120,20,80,60,false);
}

  

  圖4-6 立體矩形的例子

  4.多邊形

  多邊形的畫法通常是給出一組坐標(biāo)點(diǎn),再用直線段將這些點(diǎn)依次連接起來(lái)。Graphics類中也提供兩個(gè)方法來(lái)畫多邊形,一個(gè)是邊框型drawPolygon( )方法,另一個(gè)是填充型fillPolygon( )方法,并且每一種方法都有兩種不同的參數(shù)類型。第一種參數(shù)類型的調(diào)用格式為:

  drawPolygon(int xPoints[],int yPoints[],int nPoints)
fillPolygon(int xPoints[],int yPoints[],int nPoints)

  其中xPoints參數(shù)是一個(gè)整數(shù)數(shù)組,用以存放多邊形坐標(biāo)點(diǎn)的X坐標(biāo)值,yPoints參數(shù)放相應(yīng)的一組Y坐標(biāo)值,nPoints則表示共有幾個(gè)坐標(biāo)點(diǎn)。如下面的paint( )方法分別畫了一個(gè)邊框型和一個(gè)填充型的多邊形,其顯示效果如圖4-7所示。

  public void paint(Graphics g){
int Poly1_x[]={30,63,115,72,67};
int Poly1_y[]={40,20,95,74,106};
int Poly1_pts=Poly1_x.length;
int Poly2_x[]={180,213,265,222,217};
int Poly2_y[]={40,20,95,74,106};
int Poly2_pts=Poly2_x.length;
g.drawPolygon(Poly1_x,Poly1_y, Poly1_pts);
g.fillPolygon(Poly2_x,Poly2_y, Poly2_pts);
}

  

  圖4-7 多邊形的例子

  可以看出,邊框型多邊形并不自動(dòng)關(guān)閉多邊形的最后一條邊,而僅是一段開放的折線。所以,若想畫封閉的邊框型多邊形,不要忘了在數(shù)組的尾部再添上一個(gè)起始點(diǎn)的坐標(biāo)。上述兩個(gè)畫多邊形方法的第二種參數(shù)傳遞形式為:

  drawPolygon(Polygon p)
fillPolygon(Polygon p)

  其中Polygon是定義在java.awt中的一個(gè)類,它的構(gòu)造方法也有兩種不同的參數(shù)傳遞形式,一種與drawPolygon( )方法的第一種調(diào)用格式一樣:

  Polygon(int xPoints[],int yPoints[],int nPoints)

  另一種調(diào)用格式則是創(chuàng)建一個(gè)空的多邊形(無(wú)參數(shù)):

  Polygon( )

  那為什么要另外創(chuàng)建Polygon對(duì)象?生成一個(gè)空的Polygon對(duì)象又有何用呢?原來(lái),olygon類中提供了一系列特有的方法,可以方便的進(jìn)行與多邊形相關(guān)的操作,象其中的ddPoint( )方法可將多邊形的坐標(biāo)點(diǎn)動(dòng)態(tài)地增加到Polygon對(duì)象中。如下面列出的paint( )方法所執(zhí)行的結(jié)果與圖4-7所示的結(jié)果是一樣的。

  public void paint(Graphics g){
int Poly1_x[]={30,63,115,72,67};
int Poly1_y[]={40,20,95,74,106};
int Poly1_pts=Poly1_x.length;
Polygon poly1= new Polygon(Poly1_x,Poly1_y, Poly1_pts);
Polygon poly2= new Polygon();
poly2.addPoint(180,40);
poly2.addPoint(213,20);
poly2.addPoint(265,95);
poly2.addPoint(222,74);
poly2.addPoint(217,106);
g.drawPolygon(poly1);
g.fillPolygon(poly2);
}

  5. 橢圓

  在Java中繪制橢圓的方法是給出該橢圓的外接矩形作為參數(shù),其調(diào)用格式與畫普通矩形的方法相似:

  drawOval(int x, int y, int width, int height) //邊框型風(fēng)格

  illOval(int x, int y, int width, int height) //填充型風(fēng)格

  這里要特別注意:x和y不是橢圓的圓心坐標(biāo),而是該橢圓外接矩形的左上角。因此,橢圓時(shí),把它先看作是一個(gè)矩形將有助于在坐標(biāo)系統(tǒng)中定位。另 外,Graphics類不專門提供畫圓的方法,而只需將width與height參數(shù)置成相等就可以了。例如,下面的paint( )方法,畫出一個(gè)圓和一個(gè)用顏色填充的橢圓,其顯示效果如圖4-8所示。

  public void paint(Graphics g){
g.drawOval(30,20,60,60);
g.fillOval(130,20,80,60);
}

  

  圖4-8 橢圓的例子

  6. 畫弧

  弧是橢圓的一部分,因而畫弧的方法就相當(dāng)于先畫一個(gè)橢圓,而后取該橢圓中所需要一部分。它們的調(diào)用格式如下:

  drawArc(int x, int y, int width, int height,int startAngle, int arcAngle) //邊框型風(fēng)格

  fillArc(int x, int y, int width, int height,int startAngle, int arcAngle) //填充型風(fēng)格

  其中前四個(gè)參數(shù)的含義與畫橢圓一樣,因此也必須用矩形的觀點(diǎn)來(lái)確定弧在坐標(biāo)系統(tǒng)的位置。后兩個(gè)參數(shù)就是用來(lái)定義橢圓的一部分: startAngle參數(shù)表示該弧從什么角度開始,arcAngle參數(shù)表示從startAngle開始轉(zhuǎn)了多少度。如圖4-9的弧度坐標(biāo)系所示,水平向 右表示0度,逆時(shí)鐘方向?yàn)檎嵌戎担槙r(shí)鐘方向?yàn)樨?fù)角度值。

  

  圖4-9 弧度坐標(biāo)系

  如果startAngle和arcAngle中有任一值大于360度的話,都會(huì)被轉(zhuǎn)換為0到360度之間的值。因此若要畫滿整個(gè)橢圓,arcAngle需設(shè)為360的整數(shù)倍,若設(shè)為370度則相當(dāng)于只畫了10度。另外fillArc( )方法的效果并不是填充弧的兩個(gè)端點(diǎn)直接連線所圍的區(qū)域,而是填充弧的兩端點(diǎn)與圓心連線所圍的扇形區(qū)域,象一個(gè)餅圖。下面的paint( )方法畫了圖4-9中的幾段弧,其顯示效果如圖4-10所示。

  public void paint(Graphics g){
g.drawArc(10,20,100,60,35,65);
g.drawArc(110,20,100,60,35,-140);
g.fillArc(210,20,100,60,35,65);
g.fillArc(310,20,100,60,35,-140);
}

  

  圖4-10 弧的例子

  7.復(fù)制與清除圖形

  當(dāng)我們需要在屏幕上重復(fù)繪制一些相同的圖形時(shí),也可采用Graphics類中的copyArea( )法,它能將屏幕上某一矩形區(qū)域里的內(nèi)容復(fù)制到屏幕的另一區(qū)域。其調(diào)用格式如下:

  copyArea(int x, int y, int width, int height, int dx, int dy)

  前四個(gè)參數(shù)我們應(yīng)該是相當(dāng)熟悉了,它定義了要被復(fù)制的屏幕的矩形區(qū)域。最后兩個(gè)數(shù)則表示新區(qū)域與原始屏幕區(qū)域的偏移距離:若dx,dy為正值,則表示新區(qū)域相對(duì)于原域的右方及下方所偏移的像素值;反之,它們?nèi)∝?fù)值則分別表示相對(duì)左方及上方的偏移量。

  若要清除屏幕的某一矩形區(qū)域所畫的內(nèi)容,就要選用clearRect( )方法,它用當(dāng)前的背景顏色來(lái)填充整個(gè)矩形區(qū)域。其調(diào)用格式為:clearRect(int x, int y, int width, int height)可以看出這四個(gè)參數(shù)定義了所要清除的矩形區(qū)域。例如,想要清除整個(gè)applet區(qū)域,可先調(diào)用Applet類的size( )方法得到整個(gè)applet的寬度和高度(該方法沒(méi)有參數(shù),返回值是一個(gè)Dimension對(duì)象,該對(duì)象具有width和height實(shí)例變量),再調(diào)用clearRect( )方法就可以了:

  g.clearRect(0, 0, size( ).width, size( ).height);

  4.1.2 文本與字體

  Graphics類也提供了在屏幕上顯示文本的方法,但若要使文本的顯示更具特色,讓它滿足某種字體、某種風(fēng)格及尺寸大小的要求,就需要用字體類Font來(lái)定義。

  1. 設(shè)置文本信息

  當(dāng)我們想要在屏幕上輸出文本信息時(shí),首先要確定的就是采用何種字體,例如中文的“宋體”、“楷體”,或是英文的“TimesRoman”體、 “Courier”體等等,接著再?zèng)Q定該字體輸出時(shí)采用哪種風(fēng)格,是斜體型還是粗體型等等,最后還要確定該字體的大小尺寸。所有這些都由Font類來(lái)定 義,我們不難猜出其構(gòu)造方法的調(diào)用格式:

  Font(String name, int style, int size)

  不錯(cuò),它的三個(gè)參數(shù)就是我們先前所說(shuō)的字體名、字體風(fēng)格和尺寸大小。并且Font類中已定義了類變量來(lái)表示字體的style值,如 Font.BOLD(表示粗體)、Font.ITALIC(表示斜體)、Font.PLAIN(表示普通體)。由于它們被定義為整數(shù)常量,因此可以進(jìn)行相 加運(yùn)算來(lái)生成復(fù)合style,例如想讓style即是粗體又是斜體,可以這樣寫:

  Font fn = new Font("TimesRoman", Font.BOLD+Font.ITALIC, 28);

  雖然我們定義了所需的字體,但其顯示結(jié)果有時(shí)也并非如愿。因?yàn)檫\(yùn)行該applet的客戶端系統(tǒng)有可能并未安裝該字體,這時(shí)Java就會(huì)以缺省字 體來(lái)替代它。因此,不妨先查看一下客戶端系統(tǒng)目前究竟支持哪些字體,這就要用到j(luò)ava.awt.Toolkit類中的getFontlist( )方法,它返回系統(tǒng)目前可用的字體列表,然后就可決定到底選用哪種字體。例如:

  Toolkit systk = Toolkit.getDefaultToolkit( );
tring fonts = systk.getFontList( );

  2. 顯示文本

  創(chuàng)建了Font對(duì)象以后,我們就可以利用Graphics類中提供的drawString( )、drawChars( )等方法來(lái)顯示字符串與字符。當(dāng)然,首先還要用setFont( )方法,將所創(chuàng)建的Font對(duì)象設(shè)為當(dāng)前所用的字體。下面就是Graphics類中這三個(gè)方法的調(diào)用格式:

  setFont(Font font);
drawString(String str, int x, int y)
drawChars(char data[], int offset, int length, int x, int y)

  其中setFont( )方法的參數(shù)就是一個(gè)創(chuàng)建好的Font對(duì)象,表明系統(tǒng)當(dāng)前選用哪個(gè)Font對(duì)象所定義的字體信息。drawString( )方法中的str即是要顯示的字符串,x,y指明字符串顯示的起始位置坐標(biāo),具體的說(shuō),x表示第一個(gè)字符的左邊界,y表示整個(gè)字符串的基線 (baseline,見圖4-12)位置坐標(biāo)。因此,這里的坐標(biāo)并不是通常意義上的矩形區(qū)域的左上角。drawChars( )方法則是用來(lái)顯示多個(gè)字符的,也就是從給定的字符數(shù)組中抽取連續(xù)的一部分顯示在屏幕上。其中data參數(shù)就是給定的原始字符數(shù)組,offset表示從第 幾個(gè)字符位置開始顯示,length表示共顯示幾個(gè)字符,x與y參數(shù)的含義與drawString( )方法一樣,代表顯示在屏幕上的起始位置。

  如下面的程序顯示了一些不同的文本字體,其顯示結(jié)果如圖4-11所示。

  import java.awt.Graphics;
import java.awt.Font;
public class Fonts extends java.applet.Applet{
public void paint(Graphics g){
Font ftp20 = new Font("TimesRoman",Font.PLAIN,20);
Font fai15 = new Font("Arial",Font.ITALIC,15);
Font fcb24 = new Font("Courier",Font.BOLD,24);
Font fsib30 = new Font("宋體",Font.ITALIC+Font.BOLD,30);
g.setFont(ftp20);
g.drawString("Font name TimesRoman , style plain , size 20",10,20);
g.setFont(fai15);
g.drawString("Font name Arial , style italic , size 15",10,50);
g.setFont(fcb24);
g.drawString("Font name Courier , style bold , size 24",10,80);
g.setFont(fsib30);
g.drawString("字體名 宋體,風(fēng)格 斜體+粗體,尺寸 30",10,120);
}
}

  

  圖4-11 各種字體的例子

  3. 獲取字體信息

  (1)獲取基本信息

  如果不清楚系統(tǒng)當(dāng)前所用的字體信息,可以先調(diào)用Graphics類中的getFont( )方法,該方法無(wú)參數(shù),它返回系統(tǒng)當(dāng)前所用的Font對(duì)象,然后就可以調(diào)用Font類中提供的幾個(gè)方法來(lái)獲取該字體的基本信息。表4-1列出了Font類中的這些方法。

  表4-1 Font類提供的一些主要方法

  (2)獲取詳細(xì)信息

  有時(shí)候,我們?yōu)榱嗽谄聊簧细_地定位文本,還需要了解所選字體的更詳細(xì)的信息,例如整個(gè)字符串到底有多高,有多寬,兩行字符串的間隙有多少等 等。這時(shí),我們需要用到一個(gè)新的類FontMetrics來(lái)提供這一信息。我們可以調(diào)用Graphics類中的getFontMetrics( )方法來(lái)獲取關(guān)于當(dāng)前字體的FontMetrics對(duì)象(該方法也無(wú)參數(shù))。然后就可以利用表4-2所示的FontMetrics類中所提供的方法來(lái)獲取 更詳細(xì)的字體信息。圖4-12中給出了字體中關(guān)于Ascent、Descent、Leading等概念的示意圖。

  4.1.3 顏色的設(shè)置

  現(xiàn)在,讓我們改變一下總是在灰色背景上用黑色繪圖以及顯示文本的習(xí)慣,而給我們的applet增添一些五彩繽紛的色彩。與設(shè)置字體信息相似,要 設(shè)置新的顏色,必須先創(chuàng)建Color對(duì)象,然后再調(diào)用Graphics類中設(shè)置顏色的方法來(lái)將生成的Color對(duì)象設(shè)為當(dāng)前所用的繪圖顏色。

  

  圖4-12字體

  1. 創(chuàng)建Color類

  Java中每一種顏色都看成是由紅(R)、綠(G)、藍(lán)(B)三原色組合而成的。因此Color類的構(gòu)造方法采用如下格式:

  Color(int r, int g, int b)

  其中每個(gè)參數(shù)的值都在0到255之間,數(shù)值越大就表明這種顏色的成份越重。例如(0,0,0)代表黑色,(255,0,0)代表紅色。當(dāng)然最終 在屏幕上是否能顯示所定義的顏色還取決于客戶端系統(tǒng)的調(diào)色板所支持的顏色種類的多少。若客戶端系統(tǒng)的調(diào)色板并不支持當(dāng)前所定義的顏色值,就會(huì)在調(diào)色板中挑 選最接近的顏色來(lái)代替。

  Color類中還定義了一些標(biāo)準(zhǔn)顏色的Color對(duì)象存儲(chǔ)在類變量中,使的這些標(biāo)準(zhǔn)顏色的引用顯得更為方便。這些類變量如表4-3所示。

  2. 設(shè)置當(dāng)前顏色

  為了能使用剛才生成好的Color對(duì)象來(lái)顯示文本及繪制圖形,還需調(diào)用Graphics類中的setColor( )方法把這個(gè)對(duì)象設(shè)置為系統(tǒng)當(dāng)前所用的繪畫顏色,其調(diào)用格式為:

  setColor(Color c)

  例如,想要用藍(lán)色來(lái)顯示文本,最簡(jiǎn)單的辦法是直接引用標(biāo)準(zhǔn)色的類變量:

  setColor(Color.blue);

  另外,Java還提供了設(shè)置整個(gè)applet的背景和前景的方法,它們分別是setBackground( )方法和setForeground( )方法,它們都被定義在java.awt.Component類中,因此該方法能被其子類(包括Applet類及Applet類的子類)自動(dòng)繼承,它們的 調(diào)用格式與setColor( )方法一樣:

  setBackground(Color c)
setForeground(Color c)

  其中setForeground( )方法將影響到applet中所有已經(jīng)用其它任何顏色所繪制的圖形顯示的文本,把它們一下子都變?yōu)樵摲椒ㄋx的前景顏色,而不需用該顏色重新一一繪制。有“set”必有相應(yīng)的“get”,Java中還提供了getColor( )方法(Graphics類中)、getBackground( )方法和getForeground( )方法(Component類中)來(lái)分別獲取當(dāng)前的繪圖顏色、applet背景及前景顏色的對(duì)象。

  下面,我們寫一段程序來(lái)顯示一排用隨機(jī)定義的顏色所填充的小方塊,它們的顯示效果如圖4-13所示。

  import java.awt.Graphics;
mport java.awt.Color;
public class Colors extends java.applet.Applet{
public void paint(Graphics g){
int red,green,blue;
for (inti=10;i<400;i+=40){
red = (int)Math.floor(Math.random()*256);
green = (int)Math.floor(Math.random()*256);
blue = (int)Math.floor(Math.random()*256);
g.setColor(new Color(red,green,blue));
g.fillRect(i,20,30,30);
}
}
}

  

  圖4-13 使用繪圖顏色的例子。

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多