java.awt.geom
package.PathIterator
interface defines methods for retrieving elements from a path.Shape
interface provides a set of methods for describing and inspecting
geometric path objects. This interface is implemented by the
GeneralPath
class and other geometry classes.
All examples represented in this section create geometries by using java.awt.geom
and then render them
by using the
Graphics2D
class.
To begin you obtain a Graphics2D
object, for example
by casting the Graphics
parameter of the paint()
method.
public void paint (Graphics g) { Graphics2D g2 = (Graphics2D) g; ... }
Point
class creates a point representing a location in (x,y)
coordinate space.
The subclasses Point2D.Float
and Point2D.Double
provide correspondingly float and double precision
for storing the coordinates of the point.
//Create Point2D.Double Point2D.Double point = new Point2D.Double(x, y);
Point2D.Double()
.setLocation
method to set the position of the point as follows:
setLocation(double x, double y)
– To set the location of the point-
defining coordinates as double valuessetLocation(Point2D p)
– To set the location of the point using the coordinates of another point.Point2D
class has methods to calculate the distance between the current point and a point with
given coordinates, or the distance between two points.
Line2D
class represents a line segment in (x, y) coordinate space.
The Line2D.Float
and Line2D.Double
subclasses specify lines in float and double precision.
For example:
// draw Line2D.Double g2.draw(new Line2D.Double(x1, y1, x2, y2));
This class includes several setLine()
methods to define the endpoints of the line.
Aternatively, the endpoints of the line could be specified by using the constructor for the Line2D.Float
class as follows:
Line2D.Float(float X1, float Y1, float X2, float Y2)
Line2D.Float(Point2D p1, Point2D p2)
Stroke
object in the
Graphics2D
class to define the stroke for the line path.
java.awt.geom
package enables you to create a quadratic or cubic curve segment.
QuadCurve2D
class implements the Shape
interface.
This class represents a quadratic parametric curve segment in (x, y) coordinate space.
The QuadCurve2D.Float
and QuadCurve2D.Double
subclasses specify a quadratic curve
in float and double precision.
Several setCurve
methods are used to specify two endpoints and a control point of the curve,
whose coordinates can be defined directly, by the coordinates of other points and by using a given array.
A very useful method, setCurve(QuadCurve2D c)
, sets the quadratic curve with
the same endpoints and the control point as a supplied curve. For example:
// create new QuadCurve2D.Float QuadCurve2D q = new QuadCurve2D.Float(); // draw QuadCurve2D.Float with set coordinates q.setCurve(x1, y1, ctrlx, ctrly, x2, y2); g2.draw(q);
CubicCurve2D
class also implements the
Shape
interface.
This class represents a cubic parametric curve segment in (x, y) coordinate space.
CubicCurve2D.Float
and CubicCurve2D.Double
subclasses specify a cubic curve
in float and double precision.
The CubicCurve2D
class has similar methods for setting the curve as the
QuadraticCurve2D
class, except with a second control point. For example:
// create new CubicCurve2D.Double CubicCurve2D c = new CubicCurve2D.Double(); // draw CubicCurve2D.Double with set coordinates c.setCurve(x1, y1, ctrlx1, ctrly1, ctrlx2, ctrly2, x2, y2); g2.draw(c);
Rectangle
Classes that specify primitives represented in the following example extend the
RectangularShape
class, which implements theShape
interface and adds a few methods of its own.These methods enables you to get information about a shape’s location and size, to examine the center point of a rectangle, and to set the bounds of the shape.
The
Rectangle2D
class represents a rectangle defined by a location (x, y) and dimension (w x h). TheRectangle2D.Float
andRectangle2D.Double
subclasses specify a rectangle in float and double precision. For example:
// draw Rectangle2D.Double g2.draw(new Rectangle2D.Double(x, y, rectwidth, rectheight));The
RoundRectangle2D
class represents a rectangle with rounded corners defined by a location (x, y), a dimension (w x h), and the width and height of the corner arc. TheRoundRectangle2D.Float
andRoundRectangle2D.Double
subclasses specify a round rectangle in float and double precision.The rounded rectangle is specified with following parameters:
To set the location, size, and arcs of a
- Location
- Width
- Height
- Width of the corner arc
- Height of the corner arc
RoundRectangle2D
object, use the methodsetRoundRect(double a, double y, double w, double h, double arcWidth, double arcHeight)
. For example:
// draw RoundRectangle2D.Double g2.draw(new RoundRectangle2D.Double(x, y, rectwidth, rectheight, 10, 10));
Ellipse
TheEllipse2D
class represents an ellipse defined by a bounding rectangle. TheEllipse2D.Float
andEllipse2D.Double
subclasses specify an ellipse in float and double precision.Ellipse is fully defined by a location, a width and a height. For example:
// draw Ellipse2D.Double g2.draw(new Ellipse2D.Double(x, y, rectwidth, rectheight));
Arc
To draw a piece of an ellipse, you use theArc2D
class. This class represents an arc defined by a bounding rectangle, a start angle, an angular extent, and a closure type. TheArc2D.Float
andArc2D.Double
subclasses specify an ellipse in float and double precision.The
Arc2D
class defines the following three types of arcs, represented by corresponding constants in this class: OPEN, PIE and CHORD.Several methods set the size and parameters of the arc:
Also, you can use the
- Directly, by coordinates
- By supplied
Point2D
andDimension2D
- By copying an existing
Arc2D
setArcByCenter
method to specify an arc from a center point, given by its coordinates and a radius.
// draw Arc2D.Double g2.draw(new Arc2D.Double(x, y, rectwidth, rectheight, 90, 135, Arc2D.OPEN));The
ShapesDemo2D.java
code example contains implementations off all described geometric primitives. For more information about classes and methods represented in this section see thejava.awt.geom
specification.