Java Reference
In-Depth Information
Example 11•10: Paints.java (continued)
// Note: the 4th arg to Color() constructor specifies color opacity
g.setPaint(new GradientPaint(0, 0, new Color(0, 150, 0),
20, 20, new Color(0, 150, 0, 0), true));
g.setStroke(new BasicStroke(15)); // use wide lines
g.drawRect(25, 25, WIDTH-50, HEIGHT-50); // draw the box
// The glyphs of fonts can be used as Shape objects, which enables
// us to use Java2D techniques with letters Just as we would with
// any other shape. Here we get some letter shapes to draw.
Font font = new Font("Serif", Font.BOLD, 10); // a basic font
Font bigfont = // a scaled up version
font.deriveFont(AffineTransform.getScaleInstance(30.0, 30.0));
GlyphVector gv = bigfont.createGlyphVector(g.getFontRenderContext(),
"JAV");
Shape jshape = gv.getGlyphOutline(0);
// Shape of letter J
Shape ashape = gv.getGlyphOutline(1);
// Shape of letter A
Shape vshape = gv.getGlyphOutline(2);
// Shape of letter V
// We're going to outline the letters with a 5-pixel wide line
g.setStroke(new BasicStroke(5.0f));
// We're going to fake shadows for the letters using the
// following Paint and AffineTransform objects
Paint shadowPaint = new Color(0, 0, 0, 100);
// Translucent black
AffineTransform shadowTransform =
AffineTransform.getShearInstance(-1.0, 0.0); // Shear to the right
shadowTransform.scale(1.0, 0.5);
// Scale height by 1/2
// Move to the baseline of our first letter
g.translate(65, 270);
// Draw the shadow of the J shape
g.setPaint(shadowPaint);
g.translate(15,20); // Compensate for the descender of the J
// transform the J into the shape of its shadow, and fill it
g.fill(shadowTransform.createTransformedShape(jshape));
g.translate(-15,-20); // Undo the translation above
// Now fill the J shape with a solid (and opaque) color
g.setPaint(Color.blue);
// Fill with solid, opaque blue
g.fill(jshape);
// Fill the shape
g.setPaint(Color.black);
// Switch to solid black
g.draw(jshape);
// And draw the outline of the J
// Now draw the A shadow
g.translate(75, 0); // Move to the right
g.setPaint(shadowPaint); // Set shadow color
g.fill(shadowTransform.createTransformedShape(ashape)); // draw shadow
// Draw the A shape using a solid transparent color
g.setPaint(new Color(0, 255, 0, 125)); // Transparent green as paint
g.fill(ashape);
// Fill the shape
g.setPaint(Color.black);
// Switch to solid back
g.draw(ashape);
// Draw the outline
// Move to the right and draw the shadow of the letter V
g.translate(175, 0);
g.setPaint(shadowPaint);
Search WWH ::




Custom Search