Sunday, September 11, 2011

Applet that demonstrates a Java2D GeneralPath

package org.best.example;

import java.applet.*;
import java.awt.event.*;
import java.awt.*;
import java.awt.geom.*;
import javax.swing.*;

    public class ShapesApplet extends JApplet {
   
     // initialize the applet
     public void init()
         {
         // obtain color parameters from XHTML file
             try {
             int red = Integer.parseInt( getParameter( "red" ) );
             int green = Integer.parseInt( getParameter( "green" ) );
             int blue = Integer.parseInt( getParameter( "blue" ) );
           
             Color backgroundColor = new Color( red, green, blue );
           
             setBackground( backgroundColor );
         }
       
         // if there is an exception while processing the color
         // parameters, catch it and ignore it
             catch ( Exception exception ) {
             // do nothing
         }
     }
   
     public void paint( Graphics g )
         {
         // create arrays of x and y coordinates
         int xPoints[] =
         { 55, 67, 109, 73, 83, 55, 27, 37, 1, 43 };
         int yPoints[] =
         { 0, 36, 36, 54, 96, 72, 96, 54, 36, 36 };
       
         // obtain reference to a Graphics2D object
         Graphics2D g2d = ( Graphics2D ) g;
       
         // create a star from a series of points
         GeneralPath star = new GeneralPath();
       
         // set the initial coordinate of the GeneralPath
         star.moveTo( xPoints[ 0 ], yPoints[ 0 ] );
       
         // create the star--this does not draw the star
         for ( int k = 1; k < xPoints.length; k++ )
         star.lineTo( xPoints[ k ], yPoints[ k ] );
       
         // close the shape
         star.closePath();
       
         // translate the origin to (200, 200)
         g2d.translate( 200, 200 );
       
         // rotate around origin and draw stars in random colors
             for ( int j = 1; j <= 20; j++ ) {
             g2d.rotate( Math.PI / 10.0 );
           
             g2d.setColor(
             new Color( ( int ) ( Math.random() * 256 ),
             ( int ) ( Math.random() * 256 ),
             ( int ) ( Math.random() * 256 ) ) );
           
             g2d.fill( star ); // draw a filled star
         }
     }
}

No comments: