Shapes2.java


Shapes2.java

// Fig. 13.32: Shapes2.java
// Demonstrating a general path.
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.geom.GeneralPath;
import java.security.SecureRandom;
import javax.swing.JPanel;
import javax.swing.JFrame;

class Shapes2JPanel extends JPanel 
{
   // draw general paths
   @Override
   public void paintComponent(Graphics g)
   {
      super.paintComponent(g); 
      SecureRandom random = new SecureRandom(); 

      int[] xPoints = {55, 67, 109, 73, 83, 55, 27, 37, 1, 43};
      int[] yPoints = {0, 36, 36, 54, 96, 72, 96, 54, 36, 36};

      Graphics2D g2d = (Graphics2D) g;
      GeneralPath star = new GeneralPath(); // create GeneralPath object

      // set the initial coordinate of the General Path
      star.moveTo(xPoints[0], yPoints[0]);

      // create the star--this does not draw the star
      for (int count = 1; count < xPoints.length; count++)
         star.lineTo(xPoints[count], yPoints[count]);

      star.closePath(); // close the shape

      g2d.translate(150, 150); // translate the origin to (150, 150)

      // rotate around origin and draw stars in random colors
      for (int count = 1; count <= 20; count++) 
      {
         g2d.rotate(Math.PI / 10.0); // rotate coordinate system

         // set random drawing color
         g2d.setColor(new Color(random.nextInt(256),
            random.nextInt(256), random.nextInt(256)));

         g2d.fill(star); // draw filled star
      } 
   } 
} // end class Shapes2JPanel


public class Shapes2
{
   // execute application
   public static void main(String[] args)
   {
      // create frame for Shapes2JPanel
      JFrame frame = new JFrame("Drawing 2D Shapes");
      frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

      Shapes2JPanel shapes2JPanel = new Shapes2JPanel(); 
      frame.add(shapes2JPanel); 
      frame.setBackground(Color.WHITE);
      frame.setSize(315, 330);
      frame.setVisible(true);
   } 
} // end class Shapes2


Maintained by John Loomis, updated Wed Feb 08 12:33:12 2017