480 likes | 1.59k Views
Graphics Class Graphics class is a class in java.awt package. contains methods for creating line drawings, rectangles, ovals, arcs, polygons. control color and fonts A Graphics object represents a particular drawing surface.
E N D
Graphics Class • Graphics class is a class in java.awt package. • contains methods for creating line drawings, rectangles, ovals, arcs, polygons. • control color and fonts • A Graphics object represents a particular drawing surface. • We cannot directly call the constructor of Graphics class to create a Graphics object. • A Graphics object is created indirectly. For example, each applet is associated with a Graphics object, and we can access this Graphics object. • Any methods called with the Graphics object associated with an applet will affect that applet. • An object of Graphics class represents a particular drawing surface, and Graphics class contains methods for drawing shapes on that surface. COP 3330 Object Oriented Programming
An Applet’s Graphics Context • An applet has a graphics context which is automatically passed to the paint method when it is invoked. import java.applet.Applet; import java.awt.*; public class AnApplet extends Applet { public void paint(Graphics g) { … … // using this Graphics object g, … … // we can draw shapes on this applet. } } COP 3330 Object Oriented Programming
Coordinate System 0,0 width drawing surface of an applet height width-1,height-1 • Each point on the coordinate system represents a single pixel. • Anything drawn outside of this area will not be visible. COP 3330 Object Oriented Programming
An Example import java.applet.Applet; import java.awt.*; public class AnApplet extends Applet { public void paint(Graphics g) { g.drawRect(10,10,100,50); top left corner width and height of the rectangle g.drawLine(10,10,110,60); source coordinate destination coordinate g.drawString(“This a rectangle”,10,150); } } top left corner COP 3330 Object Oriented Programming
Drawing Shapes • Graphics class directly supports the drawing of: • lines • ovals (circles are special forms of ovals) • rectangles • arcs • polygons – triangles, hexagons, … • polylines – a series of line segments • Most shapes (except polylines) can be drawn filled or unfilled. • We can see the other graphics objects under an unfilled object • The foreground color is used to fill shapes. The other graphics objects under a filled object cannot be seen. • Thickness cannot be specified (always 1 pixel). Thicker lines can be drawn by multiple lines. g.drawLine(10,10,200,10); g.drawLine(10,11,200,11); COP 3330 Object Oriented Programming
Rectangles drawRect(xsrc,ysrc,width,height) fillRect(xsrc,ysrc,width,height) top left corner COP 3330 Object Oriented Programming
Ovals • A bounding rectangle is used to define the position of an oval. drawRect(xsrc,ysrc,width,height) fillRect(xsrc,ysrc,width,height) top left corner of the bounding rectangle bounding rectangle is not seen • if width and height are equal a circle COP 3330 Object Oriented Programming
Some Other Rectangle Related Methods clearRect(x,y,width,height) draws a (filled) rectangle in the current background color. cleans that rectangle area. drawRoundRect(x,y,width,height,arcwidth,archeight) fillRoundRect(x,y,width,height,arcwidth,archeight) draws a rectangle with rounded corners. archeight arcwidth COP 3330 Object Oriented Programming
Arcs • An arc is a segment of an oval. • The segment begins at a specific angle, and extends for a distance specified by the arc angle. drawArc(x,y,width,height,startangle,arcangle) fillArc(x,y,width,height,startangle,arcangle) -270,90 counter-clockwise (positive) 180,-180 0,360,-360 clockwise (negative) 270,-90 COP 3330 Object Oriented Programming
Arcs (cont.) • startangle is in degrees – • a value between 0 and 360, or between 0 and -360 • arcangle • positive (counter clockwise) • negative (clockwise) drawArc(20,20,50,50,90,90); drawArc(20,20,50,50,-270,90); drawArc(20,20,50,50,180,-90); drawArc(20,20,50,50,-180,-90); same arc is drawn by all of them fillArc(20,20,50,50,90,90); COP 3330 Object Oriented Programming
Polygons • A polygon is a multi-sided figure • A polygon is defined using a series of <x,y> points which indicates the end points of the sides of that polygon. • Polygons are closed. It forms a line segment from the last point to the first. • End points can be specified by: • two integer arrays or • an object of Polygon class indicating the end points. drawPolygon(int[] xpoints, int[] ypoints, int numofpoints) fillPolygon(int[] xpoints, int[] ypoints, int numofpoints) drawPolygon(Polygon poly) fillPolygon(Polygon poly) COP 3330 Object Oriented Programming
Polygons (cont.) int[] xs = {50,100,150,100}; 100,50 int[] ys = {100,50,100,150}; drawPolygon(xs,ys,4); 50,100 150,100 Polygon p = new Polygon(); p.addPoint(50,100); p.addPoint(100,50); 100,150 p.addPoint(150,100); p.addPoint(100,150); drawPolygon(p); COP 3330 Object Oriented Programming
Polyline • A polyline is a similar to a polygon except it is not closed. • There is no line segment from the last point to the first one. • Polylines cannot be filled. int[] xs = {50,100,150,100}; int[] ys = {100,50,100,150}; drawPolyline(xs,ys,4); COP 3330 Object Oriented Programming
Color Class • Color class is used to define and manage the color in which shapes are drawn. • We can control the color of the shapes we draw. • A color is defined by an R G B value (red,green,blue) that specifies the relative contribution of these three primary colors red, green, blue (values between 0 to 255). • Color class contains several final static Color objects to define basic colors. • blue Color.blue 0,0,255 • green Color.green 0,255,0 • red Color.red 255,0,0 • black Color.black 0,0,0 • white Color.white 255,255,255 • yellow Color.yellow 255,255,0 • gray Color.gray 128,128,128 COP 3330 Object Oriented Programming
Color Class (cont.) • In addition to basic colors defined in Color class, we can define our own color by setting these three values (2563 – almost 16 million different colors). Color mycolor = new Color(100,100,100); • We can change foreground (colors of shapes) and background (general color of the applet) colors. In paint method, setBackground(Color.white) changes the background color to white. setBackground is a method of Applet class. g.setColor(Color.red) changes the foreground color to red. setColor is a method of Graphics class. COP 3330 Object Oriented Programming
Color Class - Example public void paint (Graphics g) { setBackground(Color.white); background is white g.setColor(Color.yellow); color of pen is yellow g.drawString(“This is yellow”,20,20); This is yellow g.setColor(Color.blue); color of pen is blue g.drawLine(20,50,200,50); g.setColor(Color.green); color of pen is green g.drawRect(20,100,200,100); } COP 3330 Object Oriented Programming
Fonts • A font defines the look of each character when it is printed or drawn. • Font class provides methods for specifying fonts in a Java program. • There is a specific set of fonts in each system. We can use one of the fonts from this list. • Using the constructor of Font class we can create a Font object. • Then we can set the current font to this Font object using setFont method in Graphics class. new Font(fontname,style,size) “TimesRoman” Font.PLAIN 12 14 16 18 20 … “Helvetica” Font.BOLD Font.ITALIC COP 3330 Object Oriented Programming
Fonts -- Example import java.applet.Applet; import java.awt.*; public class FontTest extends Applet { public void paint(Graphics g) { g.setFont(new Font("TimesRoman",Font.PLAIN,16)); g.drawString("Font is TimesRoman-PLAIN-16",10,30); Font is TimesRoman-PLAIN-16 g.setFont(new Font("TimesRoman",Font.ITALIC,20)); g.drawString("Font is TimesRoman-ITALIC-20",10,60); Font is TimesRoman-ITALIC-20 g.setFont(new Font(“Courier",Font.BOLD+Font.ITALIC,20)); g.drawString("Font is Courier-BOLD-ITALIC-20",10,90); Font is Courier-BOLD-ITALIC-20 g.setFont(new Font("Courier",Font.PLAIN,16)); g.drawString("Font is Courier-PLAIN-16",10,120); Font is Courier-PLAIN-16 } } COP 3330 Object Oriented Programming
GraphicsTest import java.applet.Applet; import java.awt.*; public class GraphicsTest extends Applet { public void paint(Graphics g) { resize(600,400); g.drawRect(10,10,200,100); g.drawLine(10,10,210,110); g.drawLine(10,110,210,10); g.drawString("This is a rectangle",10,130); g.setColor(Color.red); g.drawString("A red string",10,150); g.setColor(Color.blue); g.drawString("A blue string",10,170); g.fillRect(300,10,100,50); g.drawOval(300,100,100,50); g.fillOval(300,200,100,50); g.drawOval(300,300,40,40); g.fillOval(350,300,40,40); } } COP 3330 Object Oriented Programming
Output of GraphicsTest COP 3330 Object Oriented Programming