亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

JavaGraphics類的繪圖方法

2019-11-15 00:38:48
字體:
來源:轉載
供稿:網友
javaGraphics類的繪圖方法

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

1. 畫線段:在窗口中畫一條線段,可以使用Graphics類的drawLine()方法:
/** * 在此圖形上下文的坐標系中,使用當前顏色在點 (x1, y1) 和 (x2, y2) 之間畫一條線 *  * @param x1 *            第一個點的 x 坐標 * @param y1 *            第一個點的 y 坐標 * @param x2 *            第二個點的 x 坐標 * @param y2 *            第二個點的 y 坐標 */public abstract void 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. 畫矩形

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

A. 畫普通矩形

有如下兩個方法畫普通矩形:

/** * 繪制指定矩形的邊框。矩形的左邊緣和右邊緣分別位于 x 和 x + width。 * 上邊緣和下邊緣分別位于 y 和 y + height。使用圖形上下文的當前顏色繪制該矩形。 */public void drawRect(int x, int y, int width, int height)/** * 填充指定的矩形。該矩形左邊緣和右邊緣分別位于 x 和 x + width - 1。 * 上邊緣和下邊緣分別位于 y 和 y + height - 1。 * 得到的矩形覆蓋 width 像素寬乘以 height 像素高的區域。 * 使用圖形上下文的當前顏色填充該矩形。 */public abstract void fillRect(int x, int y, int width, int height)

參數x表示要繪制圖形的 x 坐標,y 表示要繪制圖形的 y 坐標,width 表示圖形寬度,height 表示圖形高度。

以下代碼是畫矩形的例子:

g.drawRect(80,100,40,25); // 畫矩形線框g.setColor(Color.yellow);g.fillRect(20,70,20,30); // 畫矩形著色塊

B. 畫圓角矩形

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

/** * 用此圖形上下文的當前顏色繪制圓角矩形的邊框。 * 矩形的左邊緣和右邊緣分別位于 x 和 x + width。 * 矩形的上邊緣和下邊緣分別位于 y 和 y + height。 */public abstract void drawRoundRect(int x, int y, int width, int height,        int arcWidth, int arcHeight)/** * 用當前顏色填充指定的圓角矩形。 * 矩形的左邊緣和右邊緣分別位于 x 和 x + width - 1。 * 矩形的上邊緣和下邊緣分別位于 y 和 y + height - 1。 */public abstract void fillRoundRect(int x, int y, int width, int height,        int arcWidth, int arcHeight)

參數 arcWidth 表示4個角弧度的水平直徑,arcHeight 表示4個角弧度的垂直直徑。

以下代碼是畫矩形的例子:

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);//畫圓塊

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

C. 畫三維矩形

畫三維矩形有兩個方法:

/** * 繪制指定矩形的 3-D 高亮顯示邊框。 * 矩形的邊是高亮顯示的,以至于從左上角看呈斜面并加亮。  * 高亮顯示效果所用的顏色根據當前顏色確定。 * 得到的矩形覆蓋width + 1 像素寬乘以 height + 1 像素高的區域。 */public void draw3DRect(int x, int y, int width, int height, boolean raised)/** * 繪制一個用當前顏色填充的 3-D 高亮顯示矩形。 * 矩形的邊是高亮顯示的,以至于從左上角看呈斜面并加亮。 * 高亮顯示效果所用的顏色根據當前顏色確定 */public void fill3DRect(int x, int y, int width, int height, boolean raised)

參數 raised 表示一個用于確定矩形是凸出平面顯示還是凹入平面顯示的 boolean 值。

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

g.draw3DRect(80,100,40,25,true); // 畫一個3D矩形線框g.setColor(Color.yellow); g.fill3DRect(20,70,20,30,true); // 畫一個3D矩形著色塊
3. 畫橢圓形

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

/** * 繪制橢圓的邊框。 * 得到一個圓或橢圓,它剛好能放入由 x、y、width 和 height 參數指定的矩形中。 * 橢圓覆蓋區域的寬度為 width + 1 像素,高度為 height + 1 像素。 */public abstract void drawOval(int x, int y, int width, int height)/** * 使用當前顏色填充外接指定矩形框的橢圓。 */public abstract void 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); // 填充橢圓
4. 畫圓弧

畫圓弧有兩個方法:

/** * 繪制一個覆蓋指定矩形的圓弧或橢圓弧邊框。 */public abstract void drawArc(int x, int y, int width, int height,        int startAngle, int arcAngle)/** * 填充覆蓋指定矩形的圓弧或橢圓弧。 */public abstract void fillArc(int x, int y, int width, int height,        int startAngle, int arcAngle)

參數 startAngle 表示開始角度,arcAngle 表示相對于開始角度而言弧跨越的角度。

得到的弧從 startAngle 開始跨越 arcAngle 度。對角度的解釋如下:0 度角位于 3 點鐘位置。正值指示逆時針旋轉,負值指示順時針旋轉。

弧的中心是矩形的中心,此矩形的原點為 (x, y),大小由 width 和 height 參數指定。

得到的弧覆蓋 width + 1 像素寬乘以 height + 1 像素高的區域。

角度是相對于外接矩形的非正方形區域指定的,45 度角始終落在從橢圓中心到外接矩形右上角的連線上。因此,如果外接矩形在一個軸上遠遠長于另一個軸,則弧段的起點和結束點的角度將沿邊框長軸發生更大的偏斜。

以下代碼是畫圓弧的例子:

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); // 填充缺左下角的四分之三的橢圓
5. 畫多邊形

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

/** * 繪制一個由 x 和 y 坐標數組定義的閉合多邊形。每對 (x, y) 坐標定義一個點。 */public abstract void drawPolygon(int[] xPoints, int[] yPoints, int nPoints);/** * 填充由 x 和 y 坐標數組定義的閉合多邊形。 */public abstract void fillPolygon(int[] xPoints, int[] yPoints, int nPoints)

繪制由 nPoint 個線段定義的多邊形,其中前 nPoint - 1 個線段是 1 ≤ i ≤ 時從 (xPoints[i - 1], yPoints[i - 1]) 到 (xPoints[i], yPoints[i]) 的線段。如果最后一個點和第一個點不同,則圖形會通過在這兩點間繪制一條線段來自動閉合。

以下代碼是畫多邊形的例子:

int px1[]={50,90,10,20};//首末點相重,才能畫多邊形int py1[]={10,50,50,20};int px2[]={140,180,170,180,140,100,110,140};int py2[]={5,25,35,45,65,35,25,5};g.setColor(Color.blue);g.fillPolygon(px1,py1,4);g.setColor(Color.red);g.drawPolygon(px2,py2,8);

也可以用多邊形對象畫多邊形。用多邊形類Polygon創建一個多邊形對象,然后用這個對象繪制多邊形。Polygon類的主要方法:

Polygon()  // 創建空的多邊形。 Polygon(int[] xpoints, int[] ypoints, int npoints)  // 根據指定的參數構造并初始化新的 Polygon。 public void addPoint(int x, int y) // 將一個坐標點加入到Polygon對象中。

使用Polygon多邊形對象繪制多邊形的方法:

public void drawPolygon(Polygon p) // 繪制多邊形。public void fillPolygon(Polygon p) // 填充多邊形。

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

Polygon ponlygon1=new Polygon();    polygon1.addPoint(50,10);   polygon1.addPoint(90,50);   polygon1.addPoint(10,50);   g.drawPolygon(polygon1);    int x[]={140,180,170,180,140,100,110,100};  int y[]={5,25,35,45,65,45,35,25};   Polygon polygon2 = new Polygon(x,y,8);  g.setColor(Color.yellow);   g.fillPolygon(polygon2);
6. 畫字符串

畫字符串的常用方法是:

/** * 使用此圖形上下文的當前字體和顏色繪制由指定 string 給定的文本。 * 最左側字符的基線位于此圖形上下文坐標系的 (x, y) 位置處。 */public abstract void drawString(String str, int x, int y)

以下代碼是繪制字符串的例子:

g.setColor(Color.GREEN);g.setFont(new Font("楷體", Font.BOLD, 20));g.drawString("使用畫筆繪制的字符串內容", 220, 345);
7. 畫圖像

繪制圖像的常用方法:

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) 

參數:

Image img – 需要繪制的圖像。

int x, int y – 圖像左上角坐標。

int width, int height – 圖像的寬度和高度。

Color bgcolor – 背景色,即圖像下面的顏色。如果圖像包含透明象素時這會有用,圖像將在指定顏色背景下顯示。

ImageObserver observer – 一個實現ImageObserver 接口的對象。它將該對象登記為一個圖像觀察者,因此當圖像的任何新信息可見時它被通知。大多組件可以簡單的指定this。

組件可以指定this作為圖像觀察者的原因是Component 類實現了ImageObserver 接口。當圖像數據被加載時它的實現調用repaint方法,這通常是你所期望的。

drawImage 方法只要要顯示的圖像數據已經加載完就返回。如果你要確保drawImage只繪制完整的圖像,那么你需要跟蹤圖像的加載。

例如,繪制一張圖片:

Image img = Toolkit.getDefaultToolkit().getImage("img/monster.gif");g.drawImage(img, 510, 5, 200, 200, Color.LIGHT_GRAY, this);
8. 擦除矩形塊

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

/** * 通過使用當前繪圖表面的背景色進行填充來清除指定的矩形。 */public abstract void 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);
9. 限定作圖顯示區域

用一個矩形表示圖形的顯示區域,要求圖形在指定的范圍內有效,不重新計算新的坐標值,自動實現超出部分不顯示。實現方法是:

/** * 限制圖形在指定區域內的顯示,超出部分不顯示。多個限制區有覆蓋時,得到限制區域的交集區域。 */public abstract void 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);
10. 復制圖形

利用Graphics類的方法copyArea()可以實現圖形的復制,其使用格式是:

/** * dx和dy分別表示將圖形粘貼到原位置偏移的像素點數, * 正值為往右或往下偏移是,負值為往左或往上偏移量。 * 位移的參考點是要復制矩形的左上角坐標。 */public abstract void copyArea(int x, int y, int width, int height, int dx, int 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);

完整示例:





發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国模精品视频一区二区| 色偷偷噜噜噜亚洲男人| 国产一区二区三区在线免费观看| 欧美成人午夜激情在线| 狠狠久久五月精品中文字幕| 中文在线资源观看视频网站免费不卡| 亚洲视频一区二区| 欧美性xxxx极品高清hd直播| 91精品国产乱码久久久久久久久| 亚洲国产精品女人久久久| 日本成人在线视频网址| 国产精品欧美一区二区三区奶水| 亚洲人成自拍网站| 亚洲国产精品大全| 日韩高清电影好看的电视剧电影| 国产精品揄拍一区二区| 日本午夜精品理论片a级appf发布| 精品久久久久久久大神国产| 国产欧美日韩精品在线观看| 国产亚洲美女久久| 欧美成人黑人xx视频免费观看| www.久久久久久.com| 亚洲国产欧美一区二区三区久久| 91精品国产综合久久香蕉的用户体验| 国产91av在线| 亚洲一区二区在线播放| 91av在线免费观看视频| 国产精品久久久久久久久久东京| 国产亚洲欧洲高清一区| 亚洲free性xxxx护士hd| 亚洲免费av片| 国产狼人综合免费视频| 97精品视频在线观看| 国产成人高潮免费观看精品| 黑人精品xxx一区一二区| 日韩美女在线播放| 欧美亚洲另类在线| 欧美限制级电影在线观看| 亚洲国产天堂久久综合网| 欧美精品激情blacked18| 欧美激情视频一区二区三区不卡| 亚洲欧美日韩国产精品| 精品视频一区在线视频| 国产香蕉精品视频一区二区三区| 中文字幕精品在线视频| 欧美激情视频网址| 国产精品丝袜久久久久久不卡| 91精品国产综合久久香蕉922| 久热精品视频在线观看| 黑人精品xxx一区一二区| 亚洲欧美国产日韩天堂区| 欧美成人网在线| 国产精品一区二区三区在线播放| 久久全球大尺度高清视频| 粉嫩老牛aⅴ一区二区三区| 亚洲视频一区二区| 欧美日韩综合视频网址| 91精品久久久久久久久| 九九视频这里只有精品| 色樱桃影院亚洲精品影院| 美女av一区二区三区| 亚洲性猛交xxxxwww| 亚洲影影院av| 日韩欧美国产激情| 在线观看国产精品日韩av| 成人中心免费视频| 亚洲伊人久久综合| 欧美成人免费一级人片100| 538国产精品一区二区免费视频| 国产亚洲a∨片在线观看| 久久精品国产亚洲7777| 欧美在线xxx| 亲爱的老师9免费观看全集电视剧| 国产欧美日韩精品在线观看| 成人免费视频xnxx.com| 欧美激情网友自拍| 国产精品成人国产乱一区| 亚洲免费视频网站| 国产亚洲激情在线| 午夜精品久久久99热福利| 亚洲a在线播放| 国产激情综合五月久久| 黑人欧美xxxx| 久久人人爽人人爽人人片av高清| 久久久久久亚洲精品不卡| 亚洲欧美变态国产另类| 亚洲女性裸体视频| 日韩的一区二区| 欧美大尺度电影在线观看| 国产视频久久久久| 国产亚洲精品激情久久| 91精品国产网站| 日韩久久免费电影| 热99精品里视频精品| 亚洲人成电影网站色www| 国产精品日日摸夜夜添夜夜av| 精品久久久av| 亚洲国产欧美一区二区三区久久| 日韩欧美国产网站| 国产精品精品视频一区二区三区| 日韩电影第一页| 久久精品国产亚洲精品2020| 欧美激情亚洲自拍| 91精品国产高清自在线看超| 国产xxx69麻豆国语对白| 久久777国产线看观看精品| 亚洲欧美在线磁力| 日韩av三级在线观看| 欧美日韩国产丝袜美女| 久久精品影视伊人网| 中文欧美日本在线资源| 久久精品视频导航| 日韩av中文字幕在线免费观看| 97色在线视频| 国产婷婷成人久久av免费高清| 欧洲日本亚洲国产区| 欧美激情精品在线| 国产成人一区二区三区电影| 亚洲精品视频播放| 久久久久中文字幕2018| 91中文字幕在线| 国产成人精品综合久久久| 欧亚精品在线观看| 日韩欧美a级成人黄色| 成人激情黄色网| 精品国产一区二区三区久久狼黑人| 欧美激情一区二区三区久久久| 亚洲美女动态图120秒| 欧美成人午夜影院| 国产精品成人观看视频国产奇米| 日韩一区二区久久久| 亚洲色图综合久久| 在线视频国产日韩| 国产91色在线|免| 国产一区欧美二区三区| 亚洲区免费影片| 欧美疯狂xxxx大交乱88av| 91夜夜揉人人捏人人添红杏| 欧美精品少妇videofree| 国产成人亚洲综合91| 欧美在线欧美在线| 日韩免费视频在线观看| 欧美性猛交xxxx富婆弯腰| 中文字幕日韩欧美在线| 另类美女黄大片| 一区国产精品视频| 国产精品美女在线| 日韩国产欧美精品一区二区三区| 国产精品a久久久久久| 国产成人久久久| 久久久精品中文字幕| 亚洲一区二区自拍| 国产精品日韩在线播放| 精品久久久久久亚洲国产300| 米奇精品一区二区三区在线观看| xvideos亚洲人网站| 中文字幕欧美视频在线| 中文字幕欧美日韩va免费视频| 国产成人一区二区三区小说| 毛片精品免费在线观看| 欧美成人一区二区三区电影| 日韩美女视频中文字幕| 日韩在线一区二区三区免费视频| 日韩精品极品毛片系列视频|