前面介紹瞭如何使用畫筆在控件上展現圖像,但是圖像來源於磁盤圖片,沒法即興繪製個性化的圖案。所幸畫筆工具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:在當前位置的橫縱偏移距離處繪製文本。html
此外,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); // 把中央面板添加到窗口的中間位置
運行修改後的測試代碼,彈出的線段繪製窗口界面以下圖所示。htm
接着繪製一個矩形邊框,假設邊框爲紅色,則對應的繪製方法以下所示:對象
g.setColor(Color.RED); // 設置畫筆的顏色爲紅色 // 以座標點(x,y)爲左上角,繪製指定寬高的矩形邊框 g.drawRect(10, 10, getWidth() - 20, getHeight() - 20);
一樣運行測試界面代碼,彈出的矩形繪製窗口界面以下圖所示。blog
再繪製一個綠色的圓角矩形,但它是實心的,此時繪製過程應當調用fillRoundRect方法:圖片
g.setColor(Color.GREEN); // 設置畫筆的顏色爲綠色 // 以座標點(x,y)爲左上角,繪製指定寬高和指定圓角的圓角矩形區域 g.fillRoundRect(10, 10, getWidth() - 20, getHeight() - 20, 50, 50);
運行主界面的測試代碼,彈出的圓角矩形繪製窗口以下圖所示。ip
繼續繪製一個藍色的橢圓輪廓,注意它是空心的,此時繪製過程應當調用drawOval方法:開發
g.setColor(Color.BLUE); // 設置畫筆的顏色爲藍色 // 以座標點(x,y)爲外切矩形的左上角,繪製指定橫縱半徑的橢圓輪廓 g.drawOval(10, 10, getWidth() - 20, getHeight() - 20);
運行主界面的測試代碼,彈出的橢圓繪製窗口界面以下圖所示。
還能夠繪製一個橙色的扇形,所謂扇形是由某段圓弧鏈接兩端的橫縱半徑組成,所以它至關於實心的圓弧,此時繪製過程應當調用dfillArc方法:
g.setColor(Color.ORANGE); // 設置畫筆的顏色爲橙色 // 以座標點(x,y)爲外切矩形的左上角,繪製指定橫縱半徑和指定角度的扇形 g.fillArc(10, 10, getWidth() - 20, getHeight() - 20, 0, 90);
運行主界面的測試代碼,彈出的扇形繪製窗口界面以下圖所示。
最後使用畫筆繪製幾個文字,同時指定這段文字的顏色、字體以及大小,則對應的繪製方法以下所示:
g.setColor(Color.BLACK); // 設置畫筆的顏色爲黑色 g.setFont(new Font("大號粗體", Font.BOLD, 50)); // 設置畫筆的字體 g.drawString("春天花會開", 50, 50); // 在當前位置的橫縱偏移距離處繪製文本
運行主界面的測試代碼,彈出的文字繪製窗口界面以下圖所示。
更多Java技術文章參見《Java開發筆記(序)章節目錄》