Chapter 16 (Graphics - Dalton State College

Download Report

Transcript Chapter 16 (Graphics - Dalton State College

Graphics Chapter 16

If you want to draw shapes such as a bar chart, a clock, or a stop sign, how do you do it?

y

(0, 0)

x

x-axis (x, y) Java Coordinate System y-axis (0, 0) Conventional Coordinate System

A rectangular area

 Part of a user interface   Called a frame Contains title bar

 

Cannot draw directly on

JFrame

object

  This is a container Contains other objects

Create a panel upon which to draw

      Drawing Strings Drawing Lines Drawing Rectangles Drawing Ovals Drawing Arcs Drawing Polygons

   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

drawString() method

  Draw String window in JFrame Requires three arguments  String   x-axis coordinate  y-axis coordinate Member of Graphics class

 

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

 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

(0,0) (x, y) → String goes here (0, getHeight()) drawString(String s, int x, int y); (getWidth(),0) (getWidth(),getHeight())

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

(0,0) (x1, y1) (x2, y2) (0, getHeight()) drawLine(int x1, int y1, int x2, int y2); (getWidth(),0) (getWidth(),getHeight())

  

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

drawRect(int x, int y, int w, int h); fillRect(int x, int y, int w, int h); (x,y) (x,y) h h w w

 

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

drawRoundRect(int x, int y, int w, int h, int aw, int ah); fillRoundRect(int x, int y, int w, int h, int aw, int ah); (x,y) aw/2 ah/2 h w

 (x,y)

drawOval() and fillOval() methods

 Draw ovals using the same four arguments that rectangles use drawOval(int x, int y, int w, int h); fillOval(int x, int y, int w, int h); h w

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

fillArc() method

 Create solid arc drawArc(int x, int y, int w, int h, int angle1, int angle2); fillArc(int x, int y, int w, int h, int angle1, int angle2); (x,y) h w

 

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

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

 

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

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[3], y[3]) (x[4], y[4]) (x[2], y[2]) (x[1], y[1])

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

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

import javax.swing.JFrame; public class DrawingSamples { public static void main (String [ ] args) { JFrame aWindow = 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); } }

 

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:

   

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

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()

stringWidth() method

 Returns integer width of a String   Requires name of String Member of FontMetrics class getHeight() getLeading() getAscent() getDescent()