java.awt.geom
package.
To create more complicated geometry, such as polygons, polylines, or stars
you use another class from this package, GeneralPath.
This class implements the
Shape interface and represents a geometric path
constructed from lines, and quadratic and cubic curves. The three constructors in this class
can create the
GeneralPath object with the default winding rule (WIND_NON_ZERO),
the given winding rule (WIND_NON_ZERO or WIND_EVEN_ODD), or the specified
initial coordinate capacity. The winding rule specifies how the interior of a path is determined.
public void Paint (Graphics g) {
Graphics2D g2 = (Graphics2D) g;
...
}
To create an empty GeneralPath instance call
new GeneralPath() and then add segments to the
shape by using the following methods:
moveTo(float x, float y) – Moves the current point of the path to the given pointlineTo(float x, float y) – Adds a line segment to the current pathquadTo(float ctrlx, float ctrly, float x2, floaty2) – Adds a quadratic curve segment to the current pathcurveTo(float ctrlx1, float ctrly1, float ctrlx2, float ctrly2, float x3, floaty3)
– Adds a cubic curve segment to the current pathclosePath() – Closes the current path
The following example illustrates how to draw a polyline by using 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);
|
|
This example illustrates how to draw a polygon by using 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);
|
|
Note that the only difference between two last code examples is the closePath()
method. This method makes a polygon from a polyline by drawing a straight line back to the
coordinates of the last moveTo.
To add a specific path to the end of your GeneralPath object you use
one of the append() methods.
The
ShapesDemo2D.java code example contains additional implementations of arbitrary shapes.