330 likes | 517 Views
Java Programming. Graphics Chapter 16. Graphics. If you want to draw shapes such as a bar chart, a clock, or a stop sign, how do you do it?. Java Coordinate System. x -axis. x. (0, 0). (0, 0). y. ( x, y ). Java Coordinate System. y -axis. Conventional Coordinate System.
E N D
Java Programming Graphics Chapter 16
Graphics • If you want to draw shapes such as a bar chart, a clock, or a stop sign, how do you do it?
Java Coordinate System x-axis x (0, 0) (0, 0) y (x, y) Java Coordinate System y-axis Conventional Coordinate System
Creating a Window • A rectangular area • Part of a user interface • Called a frame • Contains title bar
Preparing to Draw • Cannot draw directly on JFrame object • This is a container • Contains other objects • Create a panel upon which to draw
Drawing Geometric Figures • Drawing Strings • Drawing Lines • Drawing Rectangles • Drawing Ovals • Drawing Arcs • Drawing Polygons
Graphic Methods • paint() method • Write own method to override default • Method header • public void paint(Graphics g) • Graphics object • Preconfigured with the appropriate state for drawing on the component • repaint() method • Use when window needs to be updated • Calls paint() method • Creates Graphics object
Drawing Strings • drawString() method • Draw String in JFrame window • Requires three arguments • String • x-axis coordinate • y-axis coordinate • Member of Graphics class
Drawing Strings • setFont() method • Requires Font object • Instruct Graphics object to use a font • somegraphicsobject.setFont(someFont); • setColor() method • Designate Graphics color • Use 13 Color class constants as arguments • Create any Color object • Color someColor = new Color(r, g, b); • Values range from 0 to 255
Drawing Strings • setColor() method • Designate Graphics color • Use 13 Color class constants as arguments • Create any Color object • Color someColor = new Color(r, g, b); • Values range from 0 to 255
Drawing Strings (getWidth(),0) (0,0) (x, y) → String goes here (0, getHeight()) (getWidth(),getHeight()) drawString(String s, int x, int y);
Drawing Lines • drawLine() method • Draw straight line between any two points • Takes four arguments • x- and y-coordinates of line’s starting point • x- and y-coordinates of the line’s ending point
Drawing Lines (getWidth(),0) (0,0) (x1, y1) (x2, y2) (0, getHeight()) (getWidth(),getHeight()) drawLine(int x1, int y1, int x2, int y2);
Drawing Shapes • drawRect() method • Draw outline of rectangle • fillRect() method • Draw solid or filled rectangle • Both require four arguments • x- and y-coordinates of upper-left corner of rectangle • Width and height of rectangle
Drawing Rectangles drawRect(intx, inty, intw, inth); fillRect(intx, inty, intw, inth); (x,y) (x,y) h h w w
Drawing Shapes • clearRect() method • Draws rectangle • Requires four arguments • x- and y-coordinates of upper-left corner of rectangle • Width and height of rectangle • Appears empty or “clear” • drawRoundRect() method • Create rectangles with rounded corners • Requires six arguments
Drawing Rounded Rectangles drawRoundRect(intx, inty, intw, inth, intaw, intah); fillRoundRect(intx, inty, intw, inth, intaw, intah); aw/2 (x,y) ah/2 h w
Drawing Ovals • drawOval() and fillOval() methods • Draw ovals using the same four arguments that rectangles use drawOval(intx, inty, intw, inth); fillOval(intx, inty, intw, inth); (x,y) h w
Drawing Arcs • drawArc() method arguments • x-coordinate of upper-left corner of imaginary rectangle that represents bounds of imaginary circle that contains arc • y-coordinate of same point • Width of imaginary rectangle that represents bounds of imaginary circle that contains arc • Height of same imaginary rectangle • Beginning arc position • Arc angle
Drawing Arcs • fillArc() method • Create solid arc drawArc(intx, inty, intw, inth, intangle1, intangle2); fillArc(intx, inty, intw, inth, intangle1, intangle2); (x,y) h w
Shadowed Rectangles • draw3DRect() method • Minor variation on drawRect() method • Draw rectangle that appears to have “shadowing” on two edges • Contains Boolean value argument • true if rectangle darker on right and bottom • false if rectangle darker on left and top • fill3DRect() method • Create filled three-dimensional rectangles
Drawing Polygons • drawPolygon() method • Draw complex shapes • Requires three arguments • Integer array holds series of x-coordinate positions • Second array holds series of corresponding y-coordinate positions • Number of pairs of points to connect
Drawing Polygons • fillPolygon() method • Draw solid shape • If beginning and ending points not identical • Two endpoints connected by straight line before polygon filled with color • addPoint() method • Add points to polygon indefinitely
Drawing Polygons int[] x = {40, 70, 60, 45, 20}; int[] y = {20, 40, 80, 45, 60}; g.drawPolygon(x, y, x.length); (x[0], y[0]) (x[1], y[1]) (x[3], y[3]) (x[4], y[4]) (x[2], y[2])
Drawing Example import java.awt.Graphics; import javax.swing.JPanel; public class DrawingPanel extends JPanel { public void paintComponent (Graphics g) { g.drawRect (50, 50, 20, 20); // square g.drawRect (100, 50, 40, 20); // rectangle g.drawOval (200, 50, 20, 20); // circle g.drawOval (250, 50, 40, 20); // oval g.drawString ("Square", 50, 90); g.drawString ("Rectangle", 100, 90); g.drawString ("Circle", 200, 90); g.drawString ("Oval", 250, 90); // continued on next slide
Drawing Example g.fillRect (50, 100, 20, 20); // square g.fillRect (100, 100, 40, 20); // rectangle g.fillOval (200, 100, 20, 20); // circle g.fillOval (250, 100, 40, 20); // oval g.drawLine (50, 150, 300, 150); // line g.drawArc (50, 150, 250, 100, 0, 180); // arc g.fillArc (100, 175, 200, 75, 90, 45); // arc } // end paintComponent } // end DrawingPanel
Drawing Example import javax.swing.JFrame; public class DrawingSamples { public static void main (String [ ] args) { JFrameaWindow = new JFrame (); aWindow.setSize (350, 300); // width x height aWindow.setDefaultCloseOperation (JFrame.EXIT_ON_CLOSE); aWindow.setTitle ("Samples of shapes we can draw"); DrawingPanel panel = new DrawingPanel (); aWindow.add (panel); aWindow.setVisible (true); } }
Font Statistics • You can display a string at any location in a panel. • Can you display it centered? • To do so, you need to use the FontMetrics class to measure the exact width and height of the string for a particular font. • A FontMetrics can measure the following attributes:
Font Statistics • Leading • Amount of space between baselines • Ascent • Height of uppercase character from baseline to top of character • Descent • Measures part of characters that “hang below” baseline • Height of font • Sum of leading, ascent, and descent
Font Statistics • getFontMetrics() method • Discover font’s height • Returns FontMetrics object • Use FontMetrics class methods with object to return Font’s statistics • public int getLeading() • public int getAscent() • public int getDescent() • public int getHeight()
Font Statistics • stringWidth() method • Returns integer width of a String • Requires name of String • Member of FontMetrics class getLeading() getHeight() getAscent() getDescent()