The Java TM Tutorial

| Start of Tutorial > Start of Trail > Start of Lesson | Search

Trail: 2D Graphics
Lesson: Overview of the Java 2D API

## Shapes

> The classes in the `java.awt.geom` package define common graphics primitives, such as points, lines, curves, arcs, rectangles, and ellipses.

### Classes in the `java.awt.geom` Package

`Arc2D` `Ellipse2D` `QuadCurve2D`
`Area` `GeneralPath` `Rectangle2D`
`CubicCurve2D` `Line2D` `RectangularShape`
`Dimension2D` `Point2D` `RoundRectangle2D`

Except for `Point2D` and `Dimension2D`, each of the geometry classes (geometries) implements the `Shape` interface, which provides a common set of methods for describing and inspecting two-dimensional geometric objects.

With these classes you can create virtually any geometric shape and render it through `Graphics2D` by calling the `draw` method or the `fill` method. For example, the geometric shapes in the following `ShapesDemo2D` applet are defined by using basic Java 2D geometries.

If you're curious, the code for this program, is in `ShapesDemo2D.java`. How to draw and fill shapes is described in the next lesson, Displaying Graphics with Graphics2D.

This figure has been reduced to fit on the page.
Click the image to view it at its natural size.

### Rectangular Shapes

> The `Rectangle2D`, `RoundRectangle2D`, `Arc2D`, and `Ellipse2D` primitives are all derived from `RectangularShape`, which defines methods for `Shape` objects that can be described by a rectangular bounding box. The geometry of a `RectangularShape` can be extrapolated from a rectangle that completely encloses the outline of the `Shape`.

### QuadCurve2D and CubicCurve2D

> The `QuadCurve2D` class allows you to create quadratic parametric curve segments. A quadratic curve is defined by two endpoints and one control point.

> The `CubicCurve2D` class allows you to create cubic parametric curve segments. A cubic curve is defined by two endpoints and two control points. The following figures demonstrate examples of quadratic and cubic curves. See Stroking and Filling Graphics Primitives to see implementations of cubic and quadratic curves.

### GeneralPath

> The `GeneralPath` class enables you to construct an arbitrary shape by specifying a series of positions along the shape's boundary. These positions can be connected by line segments, quadratic curves, or cubic (Bézier) curves. The shape pictured below can be created with three line segments and a cubic curve. See Stroking and Filling Graphics Primitives to see the implementation of this shape.

### Areas

> With the `Area` class you can perform boolean operations, such as union, intersection, and subtraction, on any two `Shape` objects. This technique, often referred to as constructive area geometry, enables you to quickly create complex `Shape` objects without having to describe each line segment or curve.

| Start of Tutorial > Start of Trail > Start of Lesson | Search