Bullseye

This is a simple applet which draws a series of filled, concentric circles alternating red and white, in other words a bullseye.

import java.applet.*;
import java.awt.*;


public class Bullseye extends Applet {

  public void paint(Graphics g) {
    
    int rectLeft, rectTop, rectHeight, rectWidth;
    int appletHeight = this.getSize().height;
    int appletWidth = this.getSize().width;

    for (int i=8; i >= 0; i--) {
      if ((i % 2) == 0) g.setColor(Color.red);
      else g.setColor(Color.white);
      
      // Center the rectangle
      rectHeight = appletHeight*i/8;
      rectWidth = appletWidth*i/8;
      rectLeft = appletWidth/2 - i*appletWidth/16;
      rectTop = appletHeight/2 - i*appletHeight/16;
      g.fillOval(rectLeft, rectTop, rectWidth, rectHeight);
    }
    
  }

}

The .class file that draws this image is only 684 bytes. The equivalent GIF image is 1,850 bytes, almost three times larger.

Almost all the work in this applet consists of centering the enclosing rectangles inside the applet. The lines in bold do that. The first two lines just set the height and the width of the rectangle to the appropriate fraction of the applet's height and width. The next two lines set the position of the upper left hand corner. Once the rectangle is positioned, drawing the oval is easy.


Previous | Next | Top
Last Modified June 15, 1998
Copyright 1997, 1998 Elliotte Rusty Harold
elharo@metalab.unc.edu