实例007 绘制多边形
实例说明
本实例演示如何在Java中绘制多边形。运行程序,将在窗体上绘制多边形,效果如图1.7所示。
关键技术
本实例主要是通过在JPanel类的子类中,重写JComponent类的paint()方法,并在该方法中使用Graphics类的drawPolygon()和fillPolygon()方法来实现的。
(1)使用Graphics类的drawPolygon()方法绘制的多边形,只有线条而没有填充色,该方法的定义如下:
public abstract void drawPolygon(int[] xPoints, int[] yPoints, int nPoints)
参数说明
? xPoints:要绘制多边形的x坐标数组。
? yPoints:要绘制多边形的y坐标数组。
? nPoints:要绘制多边形的顶点总数。
(2)使用Graphics类的fillPolygon()方法可绘制带填充色的多边形,该方法的定义如下:
public abstract void fillPolygon(int[] xPoints, int[] yPoints, int nPoints)
参数说明
? xPoints:要绘制填充多边形的x坐标数组。
? yPoints:要绘制填充多边形的y坐标数组。
? nPoints:要绘制填充多边形的顶点总数。
设计过程
(1)新建一个项目。
(2)在项目中创建一个继承JFrame类的DrawPolygonFrame窗体类。
(3)在DrawPolygonFrame窗体类中,创建内部面板类DrawPolygonPanel,并重写JComponent类的paint()方法,在该方法中使用Graphics类的drawPolygon()和drawPolygon()方法绘制多边形。
(4)将内部面板类DrawPolygonPanel的实例,添加到窗体类DrawPolygonFrame的内容面板上,用于在窗体上显示绘制的多边形,代码如下:
class DrawPolygonPanel extends JPanel { // 创建内部面板类
public void paint(Graphics g) { // 重写paint()方法
int[] x1 = { 100,120,180,140,150,100,50,60,20,80 }; // 多边形的横坐标
int[] y1 = { 20,85,90,120,180,140,180,120,90,85 }; // 多边形的纵坐标
int n1 = 10; // 多边形的边数
g.fillPolygon(x1, y1, n1); // 绘制实心多边形
int[] x2 = { 210, 270, 310, 270, 210, 170 }; // 多边形的横坐标
int[] y2 = { 20, 20, 65, 110, 110, 65 }; // 多边形的纵坐标
int n2 = 6; // 多边形的边数
g.fillPolygon(x2, y2, n2); // 绘制实心多边形
int[] x3 = { 180, 220, 260, 240, 260, 220, 180, 200 }; // 多边形的横坐标
int[] y3 = { 120, 140, 120, 160, 200, 180, 200, 160 }; // 多边形的纵坐标
int n3 = 8; // 多边形的边数
g.drawPolygon(x3, y3, n3); // 绘制空心多边形
}
}