天天看點

Java開發筆記(一百二十四)AWT繪圖操作

前面介紹了如何使用畫筆在控件上展示圖像,可是圖像來源于磁盤圖檔,無法即興繪制個性化的圖案。所幸畫筆工具Graphics不僅能夠描繪圖像,還支援繪制常見的幾何形狀,也支援繪制文本字元串,除了繪制圖像用到的drawImage方法,Graphics還有下列常見的繪圖方法:

setColor:設定畫筆的顔色。

drawLine:在指定坐标的(x1,y1)與(x2,y2)兩點之間畫條線段。

drawRect:以坐标點(x,y)為左上角,繪制指定寬高的矩形邊框。

fillRect:以坐标點(x,y)為左上角,繪制指定寬高的矩形區域。

drawRoundRect:以坐标點(x,y)為左上角,繪制指定寬高和指定圓角的圓角矩形邊框。

fillRoundRect:以坐标點(x,y)為左上角,繪制指定寬高和指定圓角的圓角矩形區域。

drawOval:以坐标點(x,y)為外切矩形的左上角,繪制指定橫縱半徑的橢圓輪廓。注意,如果橫縱半徑的數值相等,此時橢圓就變成了圓形。

fillOval:以坐标點(x,y)為外切矩形的左上角,繪制指定橫縱半徑的橢圓區域。

drawArc:以坐标點(x,y)為外切矩形的左上角,繪制指定橫縱半徑和指定角度的圓弧。

fillArc:以坐标點(x,y)為外切矩形的左上角,繪制指定橫縱半徑和指定角度的扇形。

setFont:設定畫筆的字型。

drawString:在目前位置的橫縱偏移距離處繪制文本。

此外,Graphics也支援幾種簡單的管理操作,包括平移畫筆、擦除區域、裁剪畫布等功能,對應的處理方法說明如下:

translate:平移畫筆至坐标點(x,y)。

clearRect:清除某塊矩形區域,該矩形以坐标點(x,y)為左上角,且符合指定寬高。

clipRect:裁剪某塊矩形區域,該矩形以坐标點(x,y)為左上角,且符合指定寬高。該方法的執行效果與clearRect正好相反,clearRect方法清除了矩形内部的所有圖案;而clipRect方法清除了矩形外部的所有圖案,隻留下矩形内部的圖案。

:。

繪制圖案與字元串的過程與繪制圖像一樣,都是重寫自定義控件的paint方法,在該方法中調用畫筆對象的各種繪圖方法。接下來按照之前的圖像視圖依樣畫瓢定義一個繪畫視圖DrawView,變動之處在于繪制控件的paint方法,并據此示範幾種圖案的實作效果。首先準備繪制一條黑色線段,線段的起點位于控件的左上角,終點位于控件的右下角,則相應的繪制方法示例如下:

g.setColor(Color.BLACK); // 設定畫筆的顔色為黑色
	// 在指定坐标的(x1,y1)與(x2,y2)兩點之間畫條線段
	g.drawLine(0, 0, getWidth(), getHeight());
           

主界面的代碼比較簡單,有關繪畫視圖的調用可參考如下的代碼片段:

Panel panelCenter = new Panel(); // 建立中央面闆
DrawView draw = new DrawView(); // 建立一個繪畫視圖
draw.setSize(360, 180); // 設定繪畫視圖的寬高
panelCenter.add(draw); // 在中央面闆上添加繪畫視圖
frame.add(panelCenter, BorderLayout.CENTER); // 把中央面闆添加到視窗的中間位置
           

運作修改後的測試代碼,彈出的線段繪制視窗界面如下圖所示。

Java開發筆記(一百二十四)AWT繪圖操作

接着繪制一個矩形邊框,假設邊框為紅色,則對應的繪制方法如下所示:

g.setColor(Color.RED); // 設定畫筆的顔色為紅色
	// 以坐标點(x,y)為左上角,繪制指定寬高的矩形邊框
	g.drawRect(10, 10, getWidth() - 20, getHeight() - 20);
           

同樣運作測試界面代碼,彈出的矩形繪制視窗界面如下圖所示。

Java開發筆記(一百二十四)AWT繪圖操作

再繪制一個綠色的圓角矩形,但它是實心的,此時繪制過程應當調用fillRoundRect方法:

g.setColor(Color.GREEN); // 設定畫筆的顔色為綠色
	// 以坐标點(x,y)為左上角,繪制指定寬高和指定圓角的圓角矩形區域
	g.fillRoundRect(10, 10, getWidth() - 20, getHeight() - 20, 50, 50);
           

運作主界面的測試代碼,彈出的圓角矩形繪制視窗如下圖所示。

Java開發筆記(一百二十四)AWT繪圖操作

繼續繪制一個藍色的橢圓輪廓,注意它是空心的,此時繪制過程應當調用drawOval方法:

g.setColor(Color.BLUE); // 設定畫筆的顔色為藍色
	// 以坐标點(x,y)為外切矩形的左上角,繪制指定橫縱半徑的橢圓輪廓
	g.drawOval(10, 10, getWidth() - 20, getHeight() - 20);
           

運作主界面的測試代碼,彈出的橢圓繪制視窗界面如下圖所示。

Java開發筆記(一百二十四)AWT繪圖操作

還可以繪制一個橙色的扇形,所謂扇形是由某段圓弧連接配接兩端的橫縱半徑組成,是以它相當于實心的圓弧,此時繪制過程應當調用dfillArc方法:

g.setColor(Color.ORANGE); // 設定畫筆的顔色為橙色
	// 以坐标點(x,y)為外切矩形的左上角,繪制指定橫縱半徑和指定角度的扇形
	g.fillArc(10, 10, getWidth() - 20, getHeight() - 20, 0, 90);
           

運作主界面的測試代碼,彈出的扇形繪制視窗界面如下圖所示。

Java開發筆記(一百二十四)AWT繪圖操作

最後使用畫筆繪制幾個文字,同時指定這段文字的顔色、字型以及大小,則對應的繪制方法如下所示:

g.setColor(Color.BLACK); // 設定畫筆的顔色為黑色
	g.setFont(new Font("大号粗體", Font.BOLD, 50)); // 設定畫筆的字型
	g.drawString("春天花會開", 50, 50); // 在目前位置的橫縱偏移距離處繪制文本
           

運作主界面的測試代碼,彈出的文字繪制視窗界面如下圖所示。

Java開發筆記(一百二十四)AWT繪圖操作

更多Java技術文章參見《Java開發筆記(序)章節目錄》