文档

Java™教程
隐藏目录
绘制任意形状
路径:2D 图形
课程:使用几何图形

绘制任意形状

你已经学会了如何绘制java.awt.geom包中表示的大多数形状。要创建更复杂的几何图形,例如多边形、折线或星星,您可以使用该包中的另一个类GeneralPath

该类实现了Shape接口,表示由线段、二次曲线和三次曲线构成的几何路径。该类的三个构造方法可以创建具有默认绕组规则(WIND_NON_ZERO)、给定绕组规则(WIND_NON_ZEROWIND_EVEN_ODD)或指定初始坐标容量的GeneralPath对象。绕组规则指定了如何确定路径的内部。

public void paint (Graphics g) {
    Graphics2D g2 = (Graphics2D) g;
    ...
}

要创建一个空的GeneralPath实例,请调用new GeneralPath(),然后使用以下方法向形状添加线段:

以下示例演示了如何使用GeneralPath绘制折线:

// draw GeneralPath (polyline)
int x2Points[] = {0, 100, 0, 100};
int y2Points[] = {0, 50, 50, 0};
GeneralPath polyline = 
        new GeneralPath(GeneralPath.WIND_EVEN_ODD, x2Points.length);

polyline.moveTo (x2Points[0], y2Points[0]);

for (int index = 1; index < x2Points.length; index++) {
         polyline.lineTo(x2Points[index], y2Points[index]);
};

g2.draw(polyline);
此图像表示一个折线

此示例演示了如何使用GeneralPath绘制多边形:

// draw GeneralPath (polygon)
int x1Points[] = {0, 100, 0, 100};
int y1Points[] = {0, 50, 50, 0};
GeneralPath polygon = 
        new GeneralPath(GeneralPath.WIND_EVEN_ODD,
                        x1Points.length);
polygon.moveTo(x1Points[0], y1Points[0]);

for (int index = 1; index < x1Points.length; index++) {
        polygon.lineTo(x1Points[index], y1Points[index]);
};

polygon.closePath();
g2.draw(polygon);
此图像表示一个多边形

请注意,两个代码示例的唯一区别是closePath()方法。该方法通过绘制一条直线回到最后一个moveTo的坐标来将折线变成多边形。

要在GeneralPath对象的末尾添加特定路径,可以使用其中的一个append()方法。在ShapesDemo2D.java代码示例中,还有关于任意形状的其他实现。


上一页: 绘制几何图形
下一页: 描边和填充图形基元