/*GeneralPath01.java 12/12/99
Copyright 1999, R.G.Baldwin
Illustrates use of the GeneralPath class.
Draws a 4-inch by 4-inch Frame on the screen.
Translates the orgin to the center of the Frame.
Draws a pair of X and Y-axes centered on the new origin.
Draws a GeneralPath object on the Frame. The
object is
a diamond whose vertices are at plus and minus
one-half
inch on each of the axes. The vertices are
located at
the N, S, E, and W positions.
Tested using JDK 1.2.2 under WinNT Wkstn 4.0
************************************/
import java.awt.geom.*;
import java.awt.*;
import java.awt.event.*;
class GeneralPath01{
public static void main(String[] args){
GUI guiObj = new GUI();
}//end main
}//end controlling class GeneralPath01
class GUI extends Frame{
int res;//store screen resolution here
//default scale, 72 units/inch
static final int ds = 72;
//horizonal size = 4 inches
static final int hSize = 4;
//vertical size = 4 inches
static final int vSize = 4;
GUI(){//constructor
//Get screen resolution
res = Toolkit.getDefaultToolkit().
getScreenResolution();
//Set Frame size
this.setSize(hSize*res,vSize*res);
this.setVisible(true);
this.setTitle("Copyright 1999, R.G.Baldwin");
//Window listener to terminate program.
this.addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){
System.exit(0);}});
}//end constructor
//Override the paint() method
public void paint(Graphics g){
//Downcast the Graphics object to a
// Graphics2D object
Graphics2D g2 = (Graphics2D)g;
//Scale device space to produce inches on
// the screen
// based on actual screen resolution.
g2.scale((double)res/72,(double)res/72);
//Translate origin to center of Frame
g2.translate((hSize/2)*ds,(vSize/2)*ds);
//Draw x-axis
g2.draw(new Line2D.Double(
-1.5*ds,0.0,1.5*ds,0.0));
//Draw y-axis
g2.draw(new Line2D.Double(
0.0,-1.5*ds,0.0,1.5*ds));
//Use the GeneralPath class to instantiate a
// diamond
// object whose vertices are at plus and minus
// one-half inch on each of the axes. The
// vertices in the N, S, E, and W positions,
// centered
// about the origin.
GeneralPath thePath = new GeneralPath();
thePath.moveTo(0.5f*ds,0.0f*ds);
thePath.lineTo(0.0f*ds,0.5f*ds);
thePath.lineTo(-0.5f*ds,0.0f*ds);
thePath.lineTo(0.0f*ds,-0.5f*ds);
thePath.closePath();
//Now draw the diamond on the screen
g2.draw(thePath);
}//end overridden paint()
}//end class GUI
//==================================//
Figure 16
|