正文

Java圖形與文本(6)

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


實(shí)例007  繪制多邊形

實(shí)例說明

本實(shí)例演示如何在Java中繪制多邊形。運(yùn)行程序,將在窗體上繪制多邊形,效果如圖1.7所示。

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

本實(shí)例主要是通過在JPanel類的子類中,重寫JComponent類的paint()方法,并在該方法中使用Graphics類的drawPolygon()和fillPolygon()方法來實(shí)現(xiàn)的。

(1)使用Graphics類的drawPolygon()方法繪制的多邊形,只有線條而沒有填充色,該方法的定義如下:

public abstract void drawPolygon(int[] xPoints, int[] yPoints, int nPoints)

參數(shù)說明

? xPoints:要繪制多邊形的x坐標(biāo)數(shù)組。

? yPoints:要繪制多邊形的y坐標(biāo)數(shù)組。

? nPoints:要繪制多邊形的頂點(diǎn)總數(shù)。

(2)使用Graphics類的fillPolygon()方法可繪制帶填充色的多邊形,該方法的定義如下:

public abstract void fillPolygon(int[] xPoints, int[] yPoints, int nPoints)

參數(shù)說明

? xPoints:要繪制填充多邊形的x坐標(biāo)數(shù)組。

? yPoints:要繪制填充多邊形的y坐標(biāo)數(shù)組。

? nPoints:要繪制填充多邊形的頂點(diǎn)總數(shù)。

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

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

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

(3)在DrawPolygonFrame窗體類中,創(chuàng)建內(nèi)部面板類DrawPolygonPanel,并重寫JComponent類的paint()方法,在該方法中使用Graphics類的drawPolygon()和drawPolygon()方法繪制多邊形。

(4)將內(nèi)部面板類DrawPolygonPanel的實(shí)例,添加到窗體類DrawPolygonFrame的內(nèi)容面板上,用于在窗體上顯示繪制的多邊形,代碼如下:

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

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

        int[] x1 = { 100,120,180,140,150,100,50,60,20,80 };  // 多邊形的橫坐標(biāo)

        int[] y1 = { 20,85,90,120,180,140,180,120,90,85 };  // 多邊形的縱坐標(biāo)

        int n1 = 10; // 多邊形的邊數(shù)

  g.fillPolygon(x1, y1, n1); // 繪制實(shí)心多邊形

        int[] x2 = { 210, 270, 310, 270, 210, 170 };  // 多邊形的橫坐標(biāo)

        int[] y2 = { 20, 20, 65, 110, 110, 65 };  // 多邊形的縱坐標(biāo)

        int n2 = 6; // 多邊形的邊數(shù)

        g.fillPolygon(x2, y2, n2); // 繪制實(shí)心多邊形

        int[] x3 = { 180, 220, 260, 240, 260, 220, 180, 200 };  // 多邊形的橫坐標(biāo)

        int[] y3 = { 120, 140, 120, 160, 200, 180, 200, 160 };  // 多邊形的縱坐標(biāo)

        int n3 = 8; // 多邊形的邊數(shù)

        g.drawPolygon(x3, y3, n3); // 繪制空心多邊形

    }

}

 


上一章目錄下一章

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