Custom Strokes
As we saw in Example
12-9, the Stroke
class
converts a line-drawing operation into an area-filling operation by
taking the Shape
whose outline is
to be drawn and returning a stroked shape that represents the outline
itself. Because Stroke
is such a
simple interface, it is relatively easy to implement custom Stroke
classes that perform interesting
graphical effects. Example
12-17 includes four custom Stroke
implementations that it uses along
with a simple BasicStroke
object to
produce the output shown in Figure 12-12.
Figure 12-12. Special effects with custom Stroke classes
You should pay particular attention to the ControlPointsStroke
and SloppyStroke
implementations. These classes
are interesting because they use a PathIterator
object to break a shape down
into its component line and curve segments (just the opposite of what
was done in the Spiral
class shown
in Example 12-15). These
two custom Stroke
classes also use
the GeneralPath
class of java.awt.geom
to build a custom shape out of
arbitrary line and curve segments (which shows how closely linked the
GeneralPath
class and the PathIterator
interface are).
Example 12-17. CustomStrokes.java
package je3.graphics; import java.awt.*; import java.awt.geom.*; import java.awt.font.*; /** A demonstration of writing custom Stroke classes */ public class CustomStrokes implements GraphicsExample { static final int WIDTH ...
Get Java Examples in a Nutshell, 3rd Edition now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.