正文

Java圖形與文本(24)

Java開發(fā)實(shí)戰(zhàn)1200例(第II卷) 作者:李鐘尉


實(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í)間的效果。

 


上一章目錄下一章

Copyright ? 讀書網(wǎng) ranfinancial.com 2005-2020, All Rights Reserved.
鄂ICP備15019699號(hào) 鄂公網(wǎng)安備 42010302001612號(hào)