GeneralPathDemo.java Source code

Java tutorial

Introduction

Here is the source code for GeneralPathDemo.java

Source

import java.awt.BasicStroke;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Rectangle;
import java.awt.RenderingHints;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.awt.geom.GeneralPath;
import java.awt.image.BufferedImage;

import javax.swing.JFrame;
import javax.swing.JPanel;

public class GeneralPathDemo extends JPanel {

    int x, y, x1, y1, x2, y2;

    GeneralPath oddShape;

    BufferedImage bi;

    Graphics2D big;

    boolean firstTime;

    Rectangle area;

    public GeneralPathDemo() {
        oddShape = new GeneralPath();
        firstTime = true;
        area = new Rectangle();
    }

    public GeneralPath createPath() {
        oddShape.moveTo(20, 30);
        oddShape.lineTo(30, 40);
        oddShape.lineTo(50, 10);
        oddShape.lineTo(70, 20);
        oddShape.curveTo(10, 90, 100, 50, 34, 99);
        return oddShape;
    }

    public void paintComponent(Graphics g) {
        // super.paintComponent(g);
        Graphics2D g2 = (Graphics2D) g;
        if (firstTime) {
            Dimension dim = getSize();
            int w = dim.width;
            int h = dim.height;
            oddShape = createPath();
            area = new Rectangle(w, h);
            bi = (BufferedImage) createImage(w, h);
            big = bi.createGraphics();
            big.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
            firstTime = false;
        }

        // Clears the shape that was previously drawn.
        big.setColor(Color.white);
        big.fillRect(0, 0, area.width, area.height);

        big.setColor(Color.magenta);
        big.setStroke(new BasicStroke(3.0f));
        big.draw(oddShape);
        // Draws the buffered image to the screen.
        g2.drawImage(bi, 0, 0, this);

    }

    public static void main(String s[]) {

        JFrame f = new JFrame("Odd Shape");
        f.addWindowListener(new WindowAdapter() {
            public void windowClosing(WindowEvent e) {
                System.exit(0);
            }
        });

        f.getContentPane().add(new GeneralPathDemo());
        f.setSize(new Dimension(350, 200));
        f.setVisible(true);
    }

}