實(shí)例024 繪制花瓣
實(shí)例說明
本實(shí)例演示如何使用坐標(biāo)軸平移和圖形旋轉(zhuǎn)等技術(shù)繪制花瓣。運(yùn)行程序,將在窗體上繪制花瓣,效果如圖1.24所示。
關(guān)鍵技術(shù)
本實(shí)例主要是通過在JPanel類的子類中,重寫JComponent類的paint()方法,并在該方法中使用Graphics2D類的translate()、setColor()、rotate()和fill()方法來實(shí)現(xiàn)的。
(1)使用Graphics2D類的translate()方法,將坐標(biāo)軸平移到指定點(diǎn)。
(2)使用Graphics2D類的setColor()方法,設(shè)置顏色。
(3)使用Graphics2D類的rotate()方法,旋轉(zhuǎn)繪圖上下文。
(4)使用Graphics2D類的fill()方法,在指定位置繪制帶填充色的橢圓。
設(shè)計(jì)過程
(1)新建一個(gè)項(xiàng)目。
(2)在項(xiàng)目中創(chuàng)建一個(gè)繼承JFrame類的DrawFlowerFrame窗體類。
(3)在DrawFlowerFrame窗體類中,創(chuàng)建內(nèi)部面板類DrawFlowerPanel,并重寫JComponent類的paint()方法,在該方法中實(shí)現(xiàn)花瓣的繪制。
(4)將內(nèi)部面板類DrawFlowerPanel的實(shí)例,添加到窗體類DrawFlowerFrame的內(nèi)容面板上,用于在窗體上顯示繪制的花瓣,代碼如下:
class DrawFlowerPanel extends JPanel { // 創(chuàng)建內(nèi)部面板類
public void paint(Graphics g) { // 重寫paint()方法
Graphics2D g2 = (Graphics2D)g; // 獲得Graphics2D對(duì)象
g2.translate(drawFlowerPanel.getWidth() / 2, drawFlowerPanel.getHeight() / 2); // 平移坐標(biāo)軸
// 繪制綠色花瓣
Ellipse2D.Float ellipse = new Ellipse2D.Float(30, 0, 70, 20); // 創(chuàng)建橢圓對(duì)象
Color color = new Color(0,255,0); // 創(chuàng)建顏色對(duì)象
g2.setColor(color); // 指定顏色
g2.fill(ellipse); // 繪制橢圓
int i=0;
while (i<8){
g2.rotate(30); // 旋轉(zhuǎn)畫布
g2.fill(ellipse); // 繪制橢圓
i++;
}
// 繪制紅色花瓣
ellipse = new Ellipse2D.Float(20, 0, 60, 15); // 創(chuàng)建橢圓對(duì)象
color = new Color(255,0,0); // 創(chuàng)建顏色對(duì)象
g2.setColor(color); // 指定顏色
g2.fill(ellipse); // 繪制橢圓
i=0;
while (i<15){
g2.rotate(75); // 旋轉(zhuǎn)畫布
g2.fill(ellipse); // 繪制橢圓
i++;
}
// 繪制黃色花瓣
ellipse = new Ellipse2D.Float(10, 0, 50, 15); // 創(chuàng)建橢圓對(duì)象
color = new Color(255,255,0); // 創(chuàng)建顏色對(duì)象
g2.setColor(color); // 指定顏色
g2.fill(ellipse); // 繪制橢圓
i=0;
while (i<8){
g2.rotate(30); // 旋轉(zhuǎn)畫布
g2.fill(ellipse); // 繪制橢圓
i++;
}
// 繪制紅色中心點(diǎn)
color = new Color(255, 0, 0); // 創(chuàng)建顏色對(duì)象
g2.setColor(color); // 指定顏色
ellipse = new Ellipse2D.Float(-10, -10, 20, 20); // 創(chuàng)建橢圓對(duì)象
g2.fill(ellipse); // 繪制橢圓
}
}
秘笈心法
心法領(lǐng)悟024:實(shí)現(xiàn)時(shí)鐘的繪制。
利用圖形旋轉(zhuǎn)技術(shù)和坐標(biāo)軸平移,可以實(shí)現(xiàn)時(shí)鐘的繪制,具體方法是,通過線程或定時(shí)器控件,在指定的時(shí)間間隔內(nèi)繞坐標(biāo)軸分別旋轉(zhuǎn)表示秒針、分針和時(shí)針的圖形或圖像,從而達(dá)到時(shí)鐘顯示時(shí)間的效果。