Copyright 2008 by Pearson Education Building Java Programs Graphics Reading: Supplement 3G.

Slides:



Advertisements
Similar presentations
Copyright 2010 by Pearson Education Building Java Programs More Graphics reading: Supplement 3G.
Advertisements

Copyright 2006 by Pearson Education 1 Building Java Programs Supplement 3G: Graphics.
PHY-102 SAPIntroductory GraphicsSlide 1 Introductory Graphics In this section we will learn how about how to draw graphics on the screen in Java:  Drawing.
Topic 9 more graphics Based on slides bu Marty Stepp and Stuart Reges from
Building Java Programs Supplement 3G Graphics Copyright (c) Pearson All rights reserved.
Building Java Programs Supplement 3G Graphics Copyright (c) Pearson All rights reserved.
Copyright 2006 by Pearson Education 1 Building Java Programs Supplement 3G: Graphics.
2D Graphics in Java COMP53 Nov 14, Applets and Applications Java applications are stand-alone programs – start execution with main() – runs in JVM.
Week 3 parameters, return, math, graphics Special thanks to Scott Shawcroft, Ryan Tucker, and Paul Beck for their work on these slides. Except where otherwise.
Copyright 2008 by Pearson Education Building Java Programs Graphics reading: Supplement 3G videos: Ch. 3G #1-2.
Copyright 2008 by Pearson Education Building Java Programs Graphics reading: Supplement 3G videos: Ch. 3G #1-2.
Copyright 2006 by Pearson Education 1 Building Java Programs Supplement 3G: Graphics.
1 Graphical objects We will draw graphics in Java using 3 kinds of objects: DrawingPanel : A window on the screen. Not part of Java; provided by the authors.
Graphics. Graphics Features in Java Topics to be covered Topics to be covered Graphics Basics Graphics Basics Coordinate System Coordinate System Graphics,
Agenda For Feb Finish up Unit 3 Exercises on page Unit 4 Exercises on page 33. Question #2 3. Create a Happy Face Java Applet (due next class).
Copyright 2010 by Pearson Education Building Java Programs Graphics reading: Supplement 3G.
Lecture 15: Intro to Graphics Yoni Fridman 7/25/01 7/25/01.
Chapter 7 Graphics. © Daly and Wrigley Objectives Use Graphic Components: ▫ Strings ▫ Lines ▫ Rectangles ▫ Ovals ▫ Arcs Change the color and font of elements.
Graphics & Java 2D Drawing Two Dimensional Shapes Controlling Fonts Controlling Colors.
Copyright 2006 by Pearson Education 1 Building Java Programs Chapter 5: Program Logic and Indefinite Loops.
Unit 3 parameters and graphics Special thanks to Roy McElmurry, John Kurkowski, Scott Shawcroft, Ryan Tucker, Paul Beck for their work. Except where otherwise.
1 Building Java Programs Supplement 3G: Graphics These lecture notes are copyright (C) Marty Stepp and Stuart Reges, They may not be rehosted, sold,
(C) 2010 Pearson Education, Inc. All rights reserved.  Class Graphics (from package java.awt) provides various methods for drawing text and shapes onto.
Building Java Programs Supplement 3G Graphics Copyright (c) Pearson All rights reserved.
1 A Simple Applet. 2 Applets and applications An applet is a Java program that runs on a web page Applets can be run within any modern browser To run.
Building Java Programs Graphics Reading: Supplement 3G.
CS305j Introduction to Computing Simple Graphics 1 Topic 11 Simple Graphics "What makes the situation worse is that the highest level CS course I've ever.
Introduction to Graphics. Graphical objects To draw pictures, we will use three classes of objects: –DrawingPanel : A window on the screen. –Graphics.
1 CSE 331 Design Patterns 2: Prototype, Factory slides created by Marty Stepp based on materials by M. Ernst, S. Reges, D. Notkin, R. Mercer
Copyright 2008 by Pearson Education Building Java Programs Graphics reading: Supplement 3G videos: Ch. 3G #1-2.
CS 112 Introduction to Programming Java Graphics Yang (Richard) Yang Computer Science Department Yale University 208A Watson, Phone:
Basic Graphics 03/03/16 & 03/07/16 Imagine! Java: Programming Concepts in Context by Frank M. Carrano, (c) Pearson Education - Prentice Hall, 2010.
Chapter 8 Graphics.
Adapted from slides by Marty Stepp and Stuart Reges
Parameters Readings: 3.1.
Building Java Programs
Building Java Programs
Building Java Programs
Building Java Programs
Building Java Programs
A note on Programming Assignment
Building Java Programs
Building Java Programs
CSc 110, Spring 2017 Lecture 6: Parameters (cont.) and Graphics
parameters, return, math, graphics
Chapter 10 Graphics.
Basic Graphics Drawing Shapes 1.
Topic 8 graphics "What makes the situation worse is that the highest level CS course I've ever taken is cs4, and quotes from the graphics group startup.
Building Java Programs
CSc 110, Spring 2018 Lecture 9: Parameters, Graphics and Random
1/22/2008.
Building Java Programs
CSc 110, Autumn 2017 Lecture 9: Graphics and Nested Loops
Parameters Readings: 3.1.
CSE 142 Lecture Notes Graphics with DrawingPanel Chapter 3
Building Java Programs
CSc 110, Spring 2018 Lecture 10: More Graphics
Chapter 8 Graphics.
Building Java Programs
Building Java Programs
CSc 110, Autumn 2017 Lecture 8: More Graphics
Building Java Programs
Topic 9 More Graphics Based on slides bu Marty Stepp and Stuart Reges from
Building Java Programs
Parameters Readings: 3.1.
Building Java Programs
Building Java Programs
Making a Smile Face Pepper.
Graphics Reading: Supplement 3G
Building Java Programs
Presentation transcript:

Copyright 2008 by Pearson Education Building Java Programs Graphics Reading: Supplement 3G

Copyright 2008 by Pearson Education 2 Lecture outline drawing 2D graphics DrawingPanel and Graphics objects drawing and filling shapes coordinate system colors drawing with loops drawing with parameterized methods advanced topics: custom colors, polygons, animation

Copyright 2008 by Pearson Education 3 Graphical objects We will draw graphics using these kinds of objects: DrawingPanel : A window on the screen. Not part of Java; provided by the authors. Graphics : A "pen" to draw shapes/lines on a window. Color : Colors in which to draw shapes. object: An entity that contains data and behavior. data: Variables inside the object. behavior: Methods inside the object.

Copyright 2008 by Pearson Education 4 DrawingPanel To create a window: DrawingPanel = new DrawingPanel(, ); Example: DrawingPanel panel = new DrawingPanel(300, 200); The window has nothing on it. We can draw shapes and lines on it using another object of type Graphics.

Copyright 2008 by Pearson Education 5 Graphics Shapes are drawn using an object of class Graphics. You must place an import declaration in your program: import java.awt.*; Access it by calling getGraphics on your DrawingPanel. Graphics g = panel.getGraphics(); Draw shapes by calling methods on the Graphics object. g.fillRect(10, 30, 60, 35); g.fillOval(80, 40, 50, 70);

Copyright 2008 by Pearson Education 6 Graphics methods Method nameDescription g.drawLine( x1, y1, x2, y2 ); line between points (x1, y1), (x2, y2) g.drawOval( x, y, width, height ); outline largest oval that fits in a box of size width * height with top-left at (x, y) g.drawRect( x, y, width, height ); outline of rectangle of size width * height with top-left at (x, y) g.drawString( text, x, y ); text with bottom-left at (x, y) g.fillOval( x, y, width, height ); fill largest oval that fits in a box of size width * height with top-left at (x,y) g.fillRect( x, y, width, height ); fill rectangle of size width * height with top-left at (x, y) g.setColor( Color ); set Graphics to paint any following shapes in the given color

Copyright 2008 by Pearson Education 7 Coordinate system Each (x, y) position is a pixel ("picture element"). (0, 0) is at the window's top-left corner. x increases rightward and the y increases downward. The rectangle from (0, 0) to (200, 100) looks like this: (0, 0) x+ (200, 100) y+

Copyright 2008 by Pearson Education 8 Colors Colors are specified by Color class constants named: BLACK, BLUE, CYAN, DARK_GRAY, GRAY, GREEN, LIGHT_GRAY, MAGENTA, ORANGE, PINK, RED, WHITE, YELLOW Pass to Graphics object's setColor method: g.setColor(Color.BLACK); g.fillRect(10, 30, 100, 50); g.setColor(Color.RED); g.fillOval(60, 40, 40, 70); The background color can be set by calling setBackground on the DrawingPanel : panel.setBackground(Color.YELLOW);

Copyright 2008 by Pearson Education 9 Outlined shapes To draw a shape with a fill and outline, first fill it in the fill color and then draw the same shape in the outline color. import java.awt.*; // so I can use Graphics public class DrawOutline { public static void main(String[] args) { DrawingPanel panel = new DrawingPanel(150, 70); Graphics g = panel.getGraphics(); // inner red fill g.setColor(Color.RED); g.fillRect(20, 10, 100, 50); // black outline g.setColor(Color.BLACK); g.drawRect(20, 10, 100, 50); }

Copyright 2008 by Pearson Education 10 Superimposing shapes When two shapes occupy the same pixels, the last one drawn is seen. import java.awt.*; public class DrawCar { public static void main(String[] args) { DrawingPanel panel = new DrawingPanel(200, 100); panel.setBackground(Color.LIGHT_GRAY); Graphics g = panel.getGraphics(); g.setColor(Color.BLACK); g.fillRect(10, 30, 100, 50); g.setColor(Color.RED); g.fillOval(20, 70, 20, 20); g.fillOval(80, 70, 20, 20); g.setColor(Color.CYAN); g.fillRect(80, 40, 30, 20); }

Copyright 2008 by Pearson Education 11 Drawing with loops The x, y, w, h expression can contain the loop counter, i. DrawingPanel panel = new DrawingPanel(400, 300); panel.setBackground(Color.YELLOW); Graphics g = panel.getGraphics(); g.setColor(Color.RED); for (int i = 1; i <= 10; i++) { g.fillOval( * i, * i, 50, 50 ); } DrawingPanel panel = new DrawingPanel(250, 220); Graphics g = panel.getGraphics(); g.setColor(Color.MAGENTA); for (int i = 1; i <= 10; i++) { g.drawOval(30, 5, 20 * i, 20 * i); }

Copyright 2008 by Pearson Education 12 Loops that begin at 0 Beginning a loop at 0 and using < can make coordinates easier to compute. Example: Draw ten stacked rectangles starting at (20, 20), height 10, width starting at 100 and decreasing by 10 each time: DrawingPanel panel = new DrawingPanel(160, 160); Graphics g = panel.getGraphics(); for (int i = 0; i < 10; i++) { g.drawRect(20, * i, * i, 10); }

Copyright 2008 by Pearson Education 13 Drawing w/ loops questions Code from previous slide: DrawingPanel panel = new DrawingPanel(160, 160); Graphics g = panel.getGraphics(); for (int i = 0; i < 10; i++) { g.drawRect(20, * i, * i, 10); } Write variations of the above program that draw the figures at right as output.

Copyright 2008 by Pearson Education 14 Drawing w/ loops answers Solution #1: Graphics g = panel.getGraphics(); for (int i = 0; i < 10; i++) { g.drawRect( * i, * i, * i, 10); } Solution #2: Graphics g = panel.getGraphics(); for (int i = 0; i < 10; i++) { g.drawRect( * i, * i, * i, 10); }

Copyright 2008 by Pearson Education 15 Drawing with methods To draw in multiple methods, you must pass Graphics g. import java.awt.*; public class DrawCar1 { public static void main(String[] args) { DrawingPanel panel = new DrawingPanel(200, 100); panel.setBackground(Color.LIGHT_GRAY); Graphics g = panel.getGraphics(); drawCar(g); } public static void drawCar(Graphics g) { g.setColor(Color.BLACK); g.fillRect(10, 30, 100, 50); g.setColor(Color.RED); g.fillOval(20, 70, 20, 20); g.fillOval(80, 70, 20, 20); g.setColor(Color.CYAN); g.fillRect(80, 40, 30, 20); }

Copyright 2008 by Pearson Education 16 Parameterized figures Modify the car-drawing method so that it can draw many cars, such as in the following image. Top-left corners: (10, 30), (150, 10) Hint: We must modify our drawCar method to accept x/y coordinates as parameters.

Copyright 2008 by Pearson Education 17 Parameterized answer import java.awt.*; public class DrawCar2 { public static void main(String[] args) { DrawingPanel panel = new DrawingPanel(260, 100); panel.setBackground(Color.LIGHT_GRAY); Graphics g = panel.getGraphics(); drawCar(g, 10, 30); drawCar(g, 150, 10); } public static void drawCar(Graphics g, int x, int y) { g.setColor(Color.BLACK); g.fillRect(x, y, 100, 50); g.setColor(Color.RED); g.fillOval(x + 10, y + 40, 20, 20); g.fillOval(x + 70, y + 40, 20, 20); g.setColor(Color.CYAN); g.fillRect(x + 70, y + 10, 30, 20); }

Copyright 2008 by Pearson Education 18 Modify drawCar to allow the car to be drawn at any size. Existing car: size 100. Second car: (150, 10), size 50. Once you have this working, use a for loop with your method to draw a line of cars, like the picture at right. Start at (10, 130), each size 40, separated by 50px. Drawing parameter question

Copyright 2008 by Pearson Education 19 Drawing parameter answer import java.awt.*; public class DrawCar3 { public static void main(String[] args) { DrawingPanel panel = new DrawingPanel(210, 100); panel.setBackground(Color.LIGHT_GRAY); Graphics g = panel.getGraphics(); drawCar(g, 10, 30, 100); drawCar(g, 150, 10, 50); for (int i = 0; i < 5; i++) { drawCar(g, 10 + i * 50, 130, 40); } public static void drawCar(Graphics g, int x, int y, int size) { g.setColor(Color.BLACK); g.fillRect(x, y, size, size / 2); g.setColor(Color.RED); g.fillOval(x + size / 10, y + 2 * size / 5, size / 5, size / 5); g.fillOval(x + 7 * size / 10, y + 2 * size / 5, size / 5, size / 5); g.setColor(Color.CYAN); g.fillRect(x + 7 * size / 10, y + size / 10, 3 * size / 10, size / 5); }

Copyright 2008 by Pearson Education 20 Custom colors You can construct custom Color objects. Pass 3 numbers from for red, green, and blue. DrawingPanel panel = new DrawingPanel(80, 50); Color brown = new Color(192, 128, 64); panel.setBackground(brown); or: DrawingPanel panel = new DrawingPanel(80, 50); panel.setBackground(new Color(192, 128, 64));

Copyright 2008 by Pearson Education 21 Drawing polygons Polygon objects represent arbitrary shapes. Add points to a Polygon using its addPoint( x, y ) method. Example: DrawingPanel p = new DrawingPanel(100, 100); Graphics g = p.getGraphics(); g.setColor(Color.GREEN); Polygon poly = new Polygon(); poly.addPoint(10, 90); poly.addPoint(50, 10); poly.addPoint(90, 90); g.fillPolygon(poly);

Copyright 2008 by Pearson Education 22 Animation with sleep DrawingPanel 's sleep method pauses your program for a given number of milliseconds. You can use sleep to create simple animations. DrawingPanel panel = new DrawingPanel(250, 200); Graphics g = panel.getGraphics(); g.setColor(Color.BLUE); for (int i = 1; i <= NUM_CIRCLES; i++) { g.fillOval(15 * i, 15 * i, 30, 30); panel.sleep(500); } Try adding sleep commands to loops in past exercises in this chapter and watch the panel draw itself piece by piece.