As mentioned briefly, the graphics context is a collection of state attributes specifying properties of the rendering. State attributes are sometimes also referred to as rendering attributes. Five interfaces and several classes that are part of java.awt package represent these attributes.
The first three interfaces are relevant to most development projects and are listed in Table 3.1. Note that these interfaces are implemented in the set of classes listed in Tables 3.2 and 3.3.
Class | Interface | Description |
---|---|---|
AlphaComposite | Composite | Implements rules for composite overlays. |
Color | Paint | Defines a solid color. |
GradientPaint | Paint | Defines a gradient paint pattern. |
TexturePaint | Paint | Defines a texture pattern. |
BasicStroke | Stroke | Defines shapes to represent a pen style for a line drawing. |
Two other interfaces are necessary for certain optimizations but are less commonly used by the programmer. The design of classes that use these interfaces are beyond the scope of this book.
Interface | Description |
---|---|
CompositeContext | Defines an optimized and encapsulated environment for compositing. |
PaintContext | Defines an optimized and encapsulated environment for color pattern generation. |
To make a visual effect, the programmer sets rendering attributes of the context according to the desired effect. In the BasicRecipeJ2D example from Listing 3.1, the visual effect we wanted was rather simple—we wanted the square painted red—so we changed the current color (one of many available state attributes) to red by changing the attribute with setColor(Color.Red). Note that the object we passed to the setColor() method is an instance of the Color class (which as shown in Table 3.2, implements the Paint interface).
The methods in Table 3.4 also have complementary methods for getting the current state attributes. The getBackground(), getComposite(), getPaint(), and getStroke() methods will return the corresponding current context attributes.
Another important set of attributes, called RenderingHints, allows the programmer to set state attributes for rendering options such antialiasing, dithering, and the interpolation method. The rendering methods will affect the tradeoff between the look of the output versus the speed of rendering. See the following URL for a complete list: http://java.sun.com/j2se/1.3/docs/api/java/awt/RenderingHints.html
Three other general types of rendering attributes can be set. The first is the font to use for rendering text. Some details of setting the font are covered later. The clipping path and transform, which are changed with the clip() and setTransform() methods, respectively, are covered later.