正文

Java圖形與文本(23)

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


實(shí)例023  繪制藝術(shù)圖案

實(shí)例說(shuō)明

本實(shí)例演示如何使用坐標(biāo)軸平移、圖形旋轉(zhuǎn)和獲得隨機(jī)數(shù)等技術(shù)繪制藝術(shù)圖案。運(yùn)行程序,將在窗體上繪制藝術(shù)圖案,效果如圖1.23所示。

關(guān)鍵技術(shù)

本實(shí)例主要是通過(guò)在JPanel類(lèi)的子類(lèi)中,重寫(xiě)JComponent類(lèi)的paint()方法,并在該方法中使用Graphics2D類(lèi)的translate()、setColor()、rotate()和draw()方法來(lái)實(shí)現(xiàn)的。

(1)使用Graphics2D類(lèi)的translate()方法,將坐標(biāo)軸平移到指定點(diǎn)。

(2)使用Graphics2D類(lèi)的setColor()方法,設(shè)置顏色。

(3)使用Graphics2D類(lèi)的rotate()方法,旋轉(zhuǎn)繪圖上下文。

(4)使用Graphics2D類(lèi)的draw()方法,在指定位置繪制橢圓。

設(shè)計(jì)過(guò)程

(1)新建一個(gè)項(xiàng)目。

(2)在項(xiàng)目中創(chuàng)建一個(gè)繼承JFrame類(lèi)的ArtDesignFrame窗體類(lèi)。

(3)在ArtDesignFrame窗體類(lèi)中,創(chuàng)建內(nèi)部面板類(lèi)ArtDesignPanel,并重寫(xiě)JComponent類(lèi)的paint()方法,在該方法中實(shí)現(xiàn)藝術(shù)圖案的繪制。

(4)將內(nèi)部面板類(lèi)ArtDesignPanel的實(shí)例,添加到窗體類(lèi)ArtDesignFrame的內(nèi)容面板上,用于在窗體上顯示藝術(shù)圖案,代碼如下:

class ArtDesignPanel extends JPanel {  // 創(chuàng)建內(nèi)部面板類(lèi)

    public void paint(Graphics g) {      // 重寫(xiě)paint()方法

        Graphics2D g2 = (Graphics2D)g;  // 獲得Graphics2D對(duì)象

        Ellipse2D.Float ellipse = new Ellipse2D.Float(-80, 5, 160, 10); // 創(chuàng)建橢圓對(duì)象

        Random random = new Random(); // 創(chuàng)建隨機(jī)數(shù)對(duì)象

        g2.translate(160, 90); // 平移坐標(biāo)軸

        int R = random.nextInt(256); // 隨機(jī)產(chǎn)生顏色的R值

        int G = random.nextInt(256); // 隨機(jī)產(chǎn)生顏色的G值

        int B = random.nextInt(256); // 隨機(jī)產(chǎn)生顏色的B值

        Color color = new Color(R,G,B); // 創(chuàng)建顏色對(duì)象

        g2.setColor(color); // 指定顏色

        g2.draw(ellipse); // 繪制橢圓

        int i=0;

        while (i<100){

            R = random.nextInt(256); // 隨機(jī)產(chǎn)生顏色的R值

            G = random.nextInt(256); // 隨機(jī)產(chǎn)生顏色的G值

            B = random.nextInt(256); // 隨機(jī)產(chǎn)生顏色的B值

            color = new Color(R,G,B); // 創(chuàng)建新的顏色對(duì)象

            g2.setColor(color); // 指定顏色

            g2.rotate(10); // 旋轉(zhuǎn)畫(huà)布

            g2.draw(ellipse); // 繪制橢圓

            i++;

        }

    }

}

秘笈心法

心法領(lǐng)悟023:隨機(jī)獲得顏色的RGB值。

使用Random類(lèi)的實(shí)例生成偽隨機(jī)數(shù)流,并使用該類(lèi)的nextInt(int n)方法,產(chǎn)生一個(gè)0(包含)~n(不包含)之間的隨機(jī)整數(shù),由于顏色的RGB值是0~255之間的整數(shù)值,所以為nextInt(int n)方法的參數(shù)n傳遞256,這樣就可以隨機(jī)產(chǎn)生一個(gè)0~255之間的整數(shù),表示顏色RGB值。


上一章目錄下一章

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