FileDocCategorySizeDatePackage
AntiAlias.javaAPI DocExample2363Sat Jan 24 10:44:36 GMT 2004je3.graphics

AntiAlias.java

/*
 * Copyright (c) 2004 David Flanagan.  All rights reserved.
 * This code is from the book Java Examples in a Nutshell, 3nd Edition.
 * It is provided AS-IS, WITHOUT ANY WARRANTY either expressed or implied.
 * You may study, use, and modify it for any non-commercial purpose,
 * including teaching and use in open-source projects.
 * You may distribute it non-commercially as long as you retain this notice.
 * For a commercial use license, or to purchase the book, 
 * please visit http://www.davidflanagan.com/javaexamples3.
 */
package je3.graphics;
import java.awt.*;
import java.awt.geom.*;
import java.awt.image.*;

/** A demonstration of anti-aliasing */
public class AntiAlias implements GraphicsExample {
    static final int WIDTH = 650, HEIGHT = 350;        // Size of our example
    public String getName() {return "AntiAliasing";}   // From GraphicsExample
    public int getWidth() { return WIDTH; }            // From GraphicsExample
    public int getHeight() { return HEIGHT; }          // From GraphicsExample

    /** Draw the example */
    public void draw(Graphics2D g, Component c) {
	BufferedImage image =                   // Create an off-screen image
	    new BufferedImage(65, 35, BufferedImage.TYPE_INT_RGB);
	Graphics2D ig = image.createGraphics(); // Get its Graphics for drawing

	// Set the background to a gradient fill.  The varying color of
	// the background helps to demonstrate the anti-aliasing effect
	ig.setPaint(new GradientPaint(0,0,Color.black,65,35,Color.white));
	ig.fillRect(0, 0, 65, 35);

	// Set drawing attributes for the foreground.
	// Most importantly, turn on anti-aliasing.
	ig.setStroke(new BasicStroke(2.0f));                   // 2-pixel lines
	ig.setFont(new Font("Serif", Font.BOLD, 18));          // 18-point font
	ig.setRenderingHint(RenderingHints.KEY_ANTIALIASING,   // Anti-alias!
			    RenderingHints.VALUE_ANTIALIAS_ON);

	// Now draw pure blue text and a pure red oval
	ig.setColor(Color.blue);
	ig.drawString("Java", 9, 22);
	ig.setColor(Color.red);
	ig.drawOval(1, 1, 62, 32);
	
	// Finally, scale the image by a factor of 10 and display it
	// in the window.  This will allow us to see the anti-aliased pixels
	g.drawImage(image, AffineTransform.getScaleInstance(10, 10), c);

	// Draw the image one more time at its original size, for comparison
	g.drawImage(image, 0, 0, c);
    }
}