實例023 繪制藝術圖案
實例說明
本實例演示如何使用坐標軸平移、圖形旋轉和獲得隨機數(shù)等技術繪制藝術圖案。運行程序,將在窗體上繪制藝術圖案,效果如圖1.23所示。
關鍵技術
本實例主要是通過在JPanel類的子類中,重寫JComponent類的paint()方法,并在該方法中使用Graphics2D類的translate()、setColor()、rotate()和draw()方法來實現(xiàn)的。
(1)使用Graphics2D類的translate()方法,將坐標軸平移到指定點。
(2)使用Graphics2D類的setColor()方法,設置顏色。
(3)使用Graphics2D類的rotate()方法,旋轉繪圖上下文。
(4)使用Graphics2D類的draw()方法,在指定位置繪制橢圓。
設計過程
(1)新建一個項目。
(2)在項目中創(chuàng)建一個繼承JFrame類的ArtDesignFrame窗體類。
(3)在ArtDesignFrame窗體類中,創(chuàng)建內部面板類ArtDesignPanel,并重寫JComponent類的paint()方法,在該方法中實現(xiàn)藝術圖案的繪制。
(4)將內部面板類ArtDesignPanel的實例,添加到窗體類ArtDesignFrame的內容面板上,用于在窗體上顯示藝術圖案,代碼如下:
class ArtDesignPanel extends JPanel { // 創(chuàng)建內部面板類
public void paint(Graphics g) { // 重寫paint()方法
Graphics2D g2 = (Graphics2D)g; // 獲得Graphics2D對象
Ellipse2D.Float ellipse = new Ellipse2D.Float(-80, 5, 160, 10); // 創(chuàng)建橢圓對象
Random random = new Random(); // 創(chuàng)建隨機數(shù)對象
g2.translate(160, 90); // 平移坐標軸
int R = random.nextInt(256); // 隨機產生顏色的R值
int G = random.nextInt(256); // 隨機產生顏色的G值
int B = random.nextInt(256); // 隨機產生顏色的B值
Color color = new Color(R,G,B); // 創(chuàng)建顏色對象
g2.setColor(color); // 指定顏色
g2.draw(ellipse); // 繪制橢圓
int i=0;
while (i<100){
R = random.nextInt(256); // 隨機產生顏色的R值
G = random.nextInt(256); // 隨機產生顏色的G值
B = random.nextInt(256); // 隨機產生顏色的B值
color = new Color(R,G,B); // 創(chuàng)建新的顏色對象
g2.setColor(color); // 指定顏色
g2.rotate(10); // 旋轉畫布
g2.draw(ellipse); // 繪制橢圓
i++;
}
}
}
秘笈心法
心法領悟023:隨機獲得顏色的RGB值。
使用Random類的實例生成偽隨機數(shù)流,并使用該類的nextInt(int n)方法,產生一個0(包含)~n(不包含)之間的隨機整數(shù),由于顏色的RGB值是0~255之間的整數(shù)值,所以為nextInt(int n)方法的參數(shù)n傳遞256,這樣就可以隨機產生一個0~255之間的整數(shù),表示顏色RGB值。