Java的Graphics類應該怎麼用

時間 2021-07-18 12:20:42

1樓:

這個程式可以正常執行,警告的原因是因為沒有為序列化類提供一個

private static final long serialversionuid欄位,序列化用於在網路上傳輸物件,因為初學,暫時知道這些就可以了,想多了反而容易迷惑,以後學習到這方面內容自然都會明白的。

2樓:匿名使用者

graphics類提供基本繪圖方法,graphics2d類提供更強大的繪圖能力。本節講解graphics類,下節講解graphics2d。

graphics類提供基本的幾何圖形繪製方法,主要有:畫線段、畫矩形、畫圓、畫帶顏色的圖形、畫橢圓、畫圓弧、畫多邊形等。

1. 畫線

在視窗畫一條線段,可以使用graphics類的drawline()方法:

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

例如,以下**在點(3,3)與點(50,50)之間畫線段,在點(100,100)處畫一個點。

g.drawline(3,3,50,50);//畫一條線段

g.drawline(100,100,100,100);//畫一個點。

2. 畫矩形

有兩種矩形:普通型和圓角型。

(1) 畫普通矩形有兩個方法:

drawrect(int x,int y,int width,int height):畫線框圍起來的矩形。其中引數x和y指定左上角的位置,引數width和height是矩形的寬和高。

fillrect(int x,int y,int width,int height):是用預定的顏色填充一個矩形,得到一個著色的矩形塊。

以下**是畫矩形的例子:

g.drawrect(80,100,40,25);//畫線框

g.setcolor(color.yellow);g.fillrect(20,70,20,30);//畫著色塊

(2)畫圓角矩形也有兩個方法:

drawroundrect(int x,int y,int width, int height, int arcwidth, int archeight):是用線圍起來的圓角矩形。其中引數x和y指定矩形左上角的位置;引數width和heigth是矩形的寬和高;arcwidth和archeight分別是圓角弧的橫向直徑和圓角弧的縱向直徑。

fillroundrect(int x,int y,int width,int height,int arcwidth,int archeight):是用預定的顏色填充的圓角矩形。各引數的意義同前一個方法。

以下**是畫矩形的例子:

g.drawroundrect(10,10,150,70,40,25);//畫一個圓角矩形

g.setcolor(color.blue); g.fillroundrect(80,100,100,100,60,40);//塗一個圓角矩形塊

g.drawroundrect(10,150,40,40,40,40);//畫圓

g.setcolor(color.red); g.fillroundrect(80,100,100,100,100,100);//畫圓塊

可以用畫圓角矩形方法畫圓形,當矩形的寬和高相等,圓角弧的橫向直徑和圓角弧的縱向直徑也相等,並等於矩形的寬和高時,畫的就是圓形。參見上述例子中的註釋,前一個是畫圓,後一個是塗圓塊。

3. 畫三維矩形

畫三維矩形有兩個方法:

draw3drect(int x,int y,int width,int height, boolean raised):畫一個突出顯示的矩形。其中x和y指定矩形左上角的位置,引數width和height是矩形的寬和高,引數raised是突出與否。

fill3drect(int x,int y,int width,int height,boolean raised):用預定的顏色填充一個突出顯示的矩形。

以下**是畫突出矩形的例子:

g.draw3drect(80,100,40,25,true);//畫一個線框

g.setcolor(color.yellow); g.fill3drect(20,70,20,30,true);//畫一個著色塊

4.畫橢圓形

橢圓形由橢圓的橫軸和縱軸確定。畫橢圓形有兩個方法:

drawoval(int x,int y,int width,int height):是畫用線圍成的橢圓形。其中引數x和引數y指定橢圓形左上角的位置,引數width和height是橫軸和縱軸。

filloval(int x,int y,int width,int height):是用預定的顏色填充的橢圓形,是一個著色塊。也可以用畫橢圓形方法畫圓形,當橫軸和縱軸相等時,所畫的橢圓形即為圓形。

以下**是畫橢圓形的例子:

g.drawoval(10,10,60,120);//畫橢圓

g.setcolor(color.cyan);g.filloval(100,30,60,60);//塗圓塊

g.setcolor(color.magenta);g.filloval(15,140,100,50);//塗橢圓

5. 畫圓弧

畫圓弧有兩個方法:

drawarc(int x,int y,int width,int height,int startangle, int arcangle):畫橢圓一部分的圓弧線。橢圓的中心是它的外接矩形的中心,其中引數是外接矩形的左上角座標(x,y),寬是width,高是heigh。

引數startangle的單位是 “度”,起始角度0度是指3點鐘方位.引數startangle和arcangle表示從startangle角度開始,逆時針方向畫arcangle度的弧,約定,正值度數是逆時針方向,負值度數是順時針方向,例如-90度是6點鐘方位。

fillarc(int x,int y,int width, int height, int startangle, int arcangle):用setcolor()方法設定的顏色,畫著色橢圓的一部分。

以下**是畫圓弧的例子:

g.drawarc(10,40,90,50,0,180);//畫圓弧線

g.drawarc(100,40,90,50,180,180);//畫圓弧線

g.setcolor(color.yellow); g.fillarc(10,100,40,40,0,-270);//填充缺右上角的四分之三的橢圓

g.setcolor(color.green); g.fillarc(60,110,110,60,-90,-270);//填充缺左下角的四分之三的橢圓

6. 畫多邊形

多邊形是用多條線段首尾連線而成的封閉平面圖。多邊形線段端點的x座標和y座標分別儲存在兩個陣列中,畫多邊形就是按給定的座標點順序用直線段將它們連起來。以下是畫多邊形常用的兩個方法:

drawpolygon(int xpoints,int ypoints,int npoints):畫一個多邊形

fillpolygon(int xpoints,int ypoints,int npoints):用方法setcolor()設定的顏色著色多邊形。其中陣列xpoints儲存x座標點,ypoints儲存y座標點,npoints是座標點個數。

注意,上述方法並不自動閉合多邊形,要畫一個閉合的多邊形,給出的座標點的最後一點必須與第一點相同.以下**實現填充一個三角形和畫一個八邊形。

int px1=;//首末點相重,才能畫多邊形

int py1=;

int px2=;

int py2=;

g.setcolor(color.blue);

g.fillpolygon(px1,py1,4);

g.setcolor(color.red);

g.drawpolygon(px2,py2,9);

也可以用多邊形物件畫多邊形。用多邊形類polygon建立一個多邊形物件,然後用這個物件繪製多邊形。polygon類的主要方法:

polygon():建立多邊形物件,暫時沒有座標點。

polygon(int xpoints,int ypoints,int npoints):用指定的座標點建立多邊形物件。

addpoint():將一個座標點加入到polygon物件中。

drawpolygon(polygon p):繪製多邊形。

fillpolygon(polygon p):和指定的顏色填充多邊形。

例如,以下**,畫一個三角形和填充一個黃色的三角形。注意,用多邊形物件畫封閉多邊形不要求首末點重合。

int x=;

int y=;

polygon ponlygon1=new polygon();

polygon1.addpoint(50,10);

polygon1.addpoint(90,50);

polygon1.addpoint(10,50);

g.drawpolygon(polygon1);

g.setcolor(color.yellow);

polygon polygon2 = new polygon(x,y,8);

g.fillpolygon(polygon2);

7. 擦除矩形塊

當需要在一個著色圖形的中間有一個空缺的矩形的情況,可用背景色填充一矩形塊實現,相當於在該矩形塊上使用了 “橡皮擦”.實現的方法是:

clearrect(int x,int y, int width,int height):擦除一個由引數指定的矩形塊的著色。

例如,以下**實現在一個圓中擦除一個矩形塊的著色:

g.setcolor(color.blue);

g.filloval(50,50,100,100);g.clearrect(70,70,40,55);

8. 限定作圖顯示區域

用一個矩形表示圖形的顯示區域,要求圖形在指定的範圍內有效,不重新計算新的座標值,自動實現超出部分不顯示。方法是cliprect(int x,int y,int width,int height),限制圖形在指定區域內的顯示,超出部分不顯示。多個限制區有覆蓋時,得到限制區域的交集區域。

例如,**:

g.cliprect(0,0,100,50);g.cliprect(50,25,100,50);

相當於g.cliprect(50,25,50,25);

9. 複製圖形

利用graphics類的方法copyarea()可以實現圖形的複製,其使用格式是:

copyarea(int x,int y,int width,int height, int dx, int dy),dx和dy分別表示將圖形貼上到原位置偏移的畫素點數,正值為往右或往下偏移是,負值為往左或往上偏移量。位移的參考點是要複製矩形的左上角座標。

例如,以下**示意圖形的複製,將一個矩形的一部分、另一個矩形的全部分別自制。

g.drawrect(10,10,60,90);

g.fillrect(90,10,60,90);

g.copyarea(40,50,60,70,-20,80);

g.copyarea(110,50,60,60,10,80);

編寫java程式,定義學生類student,屬性包含

public class student public student string name,string age,string gender public string getname public void setname string name public string getage pu...

java中建立物件 類名 物件名new 類名後面的

怕怕叫什麼好呢 你朋友說的很對 類的構造方法是與類同名的 所以 類名 就是表示 構造方法 我是不推薦前者的表示方法 這樣沒有突出這是個方法 方法自然是需要 的 括號裡是引數 沒有就不填 但是不能省略. 歐尼醬死 類名 物件名 new 構造方法 構造方法 構造方法名 引數 構造方法名的值 類名的值 我...

java迴圈語句的問題,Java迴圈語句的問題。

第一次迴圈時 i 0 執行int k i 這句 後i 1,k 1 所以第一次列印的i 1 當二次迴圈時,因為前一次迴圈後,i 1了 再執行迴圈條件i 後,i變成2了,最後再執行 int k i i就等於3了,k也變成3了,此時列印的i當然是3 當3次迴圈時,因為前一次迴圈後,i 3了 再執行迴圈條件...