Topic 8 graphics. -mgrimes, Graphics problem report 134

Similar documents
Building Java Programs

Topic 8 Graphics. Margaret Hamilton

Building Java Programs

Building Java Programs

Garfield AP CS. Graphics

Building Java Programs

Using Graphics. Building Java Programs Supplement 3G

Topic 9 More Graphics. Based on slides bu Marty Stepp and Stuart Reges from

CSc 110, Autumn 2016 Lecture 7: Graphics. Adapted from slides by Marty Stepp and Stuart Reges

CSc 110, Spring 2018 Lecture 9: Parameters, Graphics and Random. Adapted from slides by Marty Stepp and Stuart Reges

Parameters. Repetitive figures. A solution? Parameterization. Declaring parameterized methods. Generalizing methods. Readings: 3.1

CS 112 Introduction to Programming

Admin. CS 112 Introduction to Programming. Recap: OOP. Math.random() Design. Static Math.random() method vs Random Objects

TWO-DIMENSIONAL FIGURES

Building Java Programs

Admin. CS 112 Introduction to Programming. Counting Down: Code Puzzle. Counting Down: Code Puzzle

Building Java Programs

12/22/11. } Rolling a Six-Sided Die. } Fig 6.7: Rolling a Six-Sided Die 6,000,000 Times

CS 112 Introduction to Programming

CS 106A, Lecture 11 Graphics

public static void main(string[] args) { GTest mywindow = new GTest(); // Title This program creates the following window and makes it visible:

Unit 3. parameters and graphics

Week 3. parameters, return, math, graphics

CISC 1600 Lecture 3.1 Introduction to Processing

Using the API: Introductory Graphics Java Programming 1 Lesson 8

CS Problem Solving and Object-Oriented Programming

CIS 162 Project 1 Business Card Section 04 (Kurmas)

CS 312 Midterm 1 Spring 2013

CSC System Development with Java Introduction to Java Applets Budditha Hettige

Repetition. We might start out with the following program that draws only the left most object.

Appendix F: Java Graphics

Introduction to Computer Science I

An Introduction to Processing

Assignment 2. Application Development

AP CS Java Syntax Summary: (version 3)

Appendix F: Java Graphics

Graphics and Java 2D Introduction OBJECTIVES. One picture is worth ten thousand words.

CIS 110 Introduction To Computer Programming. October 5th, 2011 Exam 1. Answer key for review problems

Topic 6 loops, figures, constants

AP CS Java Syntax Summary: (version 4)

2IS45 Programming

CS 312 Midterm 1 Spring 2013

CS 305j Midterm 1 Fall 2006

AWT COLOR CLASS. Introduction. Class declaration. Field

CSC 1051 Data Structures and Algorithms I. Dr. Mary-Angela Papalaskari Department of Computing Sciences Villanova University

Dr. Hikmat A. M. AbdelJaber

Exam: Applet, Graphics, Events: Mouse, Key, and Focus

Topic 27 classes and objects, state and behavior

AP CS Unit 12: Drawing and Mouse Events

5. Introduction to Procedures

CS 305j Midterm 1 Fall 2007

2D Graphics. Shape Models, Drawing, Selection. CS d Graphics 1

CS 112 Introduction to Programming

CS 112 Introduction to Programming

9. APPLETS AND APPLICATIONS

Java Applet Basics. Life cycle of an applet:

The FacebookPerson Example. Dr. Xiaolin Hu CSC 2310, Spring 2015

Warping & Blending AP

Chapter 3 - Introduction to Java Applets

Java Programming Lecture 6

2D Graphics. Shape Models, Drawing, Selection. CS d Graphics 1

Creating objects TOPIC 3 INTRODUCTION TO PROGRAMMING. Making things to program with.

Advanced Internet Programming CSY3020

CISC 1115 (Science Section) Brooklyn College Professor Langsam. Assignment #5

OBJECT ORIENTED PROGRAMMING. Course 8 Loredana STANCIU Room B613

CS 201 Advanced Object-Oriented Programming Lab 1 - Improving Your Image Due: Feb. 3/4, 11:30 PM

CS 100: Programming Assignment P1


Applets and the Graphics class

G51PRG: Introduction to Programming Second semester Applets and graphics

11/7/12. Discussion of Roulette Assignment. Objectives. Compiler s Names of Classes. GUI Review. Window Events

Exercise NMCGJ: Animated Graphics

Outline. Turtles. Creating objects. Turtles. Turtles in Java 1/27/2011 TOPIC 3 INTRODUCTION TO PROGRAMMING. Making things to program with.

Affine Transformations. Transforming shape models Combining affine transformations Scene graphs, interactor trees Hit tests on transformed shapes

Programming by Delegation

@Override public void start(stage primarystage) throws Exception { Group root = new Group(); Scene scene = new Scene(root);

Chapter 1 Introduction to Java

Admin. CS 112 Introduction to Programming. Recap. Example: Nested Loop. Example: Rewrite

TOPIC 8 MORE ON WHILE LOOPS

AP CS Unit 11: Graphics and Events

Graphics Applets. By Mr. Dave Clausen

SFPL Reference Manual

Java - Applets. C&G criteria: 1.2.2, 1.2.3, 1.2.4, 1.3.4, 1.2.4, 1.3.4, 1.3.5, 2.2.5, 2.4.5, 5.1.2, 5.2.1,

CSE115 Lab 4 Fall 2016

Java Mouse Actions. C&G criteria: 5.2.1, 5.4.1, 5.4.2,

Data Representation and Applets

Lecture Static Methods and Variables. Static Methods

Programming Assignment 4 ( 100 Points )

Road Map. Introduction to Java Applets Review applets that ship with JDK Make our own simple applets

Practice Midterm 1. Problem Points Score TOTAL 50

Java - Applets. public class Buttons extends Applet implements ActionListener

Topic Notes: Java and Objectdraw Basics

In order to teach you about computer programming, I am going to make several assumptions from the start:

CS Programming Exercise:

Name CS/120 Sample Exam #1 -- Riley. a) Every program has syntax, which refers to the form of the code, and, which refers to the meaning of the code.

We will start our journey into Processing with creating static images using commands available in Processing:

Work with Shapes. Concepts CHAPTER. Concepts, page 3-1 Procedures, page 3-5

GIMP WEB 2.0 BUTTONS

Building Java Programs

Graflog User s guide

Transcription:

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 readme like 'these paths are abstracted as being the result of a topological sort on the graph of ordering dependencies for the entries' make me lose consciousness in my chair and bleed from the nose." -mgrimes, Graphics problem report 134 Based on slides bu Marty Stepp and Stuart Reges from http://www.buildingjavaprograms.com/ Andries van Dam Head of the Brown Graphics Group

CS324E, Graphics and Visualization Examples - Heat Map

Random Art

Image Manipulation

Simulation and Visualization WatorWorld

Fractal 3D Landscape

Objects (briefly) object: An entity that contains data and behavior. data: variables inside the object behavior: methods called on object You interact with the methods; the data is hidden in the object. A class is a data type. Constructing (creating) an object: Type objectname = new Type(parameters); Calling an object's method: objectname.methodname(parameters);

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. See class web site. Graphics: A "pen" to draw shapes and lines on a window. Color: Colors in which to draw shapes.

DrawingPanel "Canvas" objects that represents windows/drawing surfaces To create a window: DrawingPanel name = new DrawingPanel(width, height); Example: DrawingPanel panel = new DrawingPanel(300, 200); The window has nothing on it. We draw shapes / lines on it with another object of type Graphics.

Graphics "Pen" or "paint brush" objects to draw lines and shapes 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);

Java class libraries, import Java class libraries: Classes included with Java's JDK. organized into groups named packages To use a package, put an import declaration in your program: // put this at the very top of your program import packagename.classname; Graphics belongs to a package named java.awt import java.awt.graphics; To use Graphics, you must place the above line at the very top of your program, before the public class header.

Coordinate system Each (x, y) position is a pixel ("picture element"). Position (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+ y+ (200, 100)

Graphics methods Method name Description g.drawline(x1, y1, x2, y2); line between points (x1, y1), (x2, y2) g.drawoval(x, y, width, height); g.drawrect(x, y, width, height); outline largest oval that fits in a box of size width * height with top-left at (x, y) 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); g.fillrect(x, y, width, height); g.setcolor(color); fill largest oval that fits in a box of size width * height with top-left at (x, y) fill rectangle of size width * height with top-left at (x, y) set Graphics to paint any following shapes in the given color

Color Specified as predefined Color class constants: Color.CONSTANT_NAME where CONSTANT_NAME is one of: BLACK, BLUE, CYAN, DARK_GRAY, GRAY, GREEN, LIGHT_GRAY, MAGENTA, ORANGE, PINK, RED, WHITE, YELLOW Or create one using Red-Green-Blue (RGB) values of 0-255 Color name = new Color(red, green, blue); Example: Color brown = new Color(192, 128, 64); Color burntorange = new Color(191, 87, 0); List of Colors

Clicker Question How many rectangles appear on the DrawingPanel when the following code is run? DrawingPanel p1 = new DrawingPanel(200, 200); Graphics gr = new Graphics(); for(int i = 0; i < 5; i++) { gr.drawrect(i * 25, i * 20, 20, 50); } A. 5 B. 6 C. 20 D. None due to syntax error E. None due to runtime error

Clicker Question What named color is closest to the Color object created by this code? Color mc = new Color(255, 255, 255); A. Black B. Brown C.Gray D.Orange E. White

Using colors Pass a Color to Graphics object's setcolor method Subsequent shapes will be drawn in the new color. g.setcolor(color.black); g.fillrect(10, 30, 100, 50); g.drawline(20, 0, 10, 30); g.setcolor(color.red); g.filloval(60, 40, 40, 70); Pass a color to DrawingPanel's setbackground method The overall window background color will change. Color brown = new Color(192, 128, 64); panel.setbackground(brown);

Outlined shapes To draw a colored shape with an outline, first fill it, then draw the same shape in the outline color. import java.awt.graphics; // so I can use Graphics import java.awt.color; public class OutlineExample { 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);

Superimposing shapes When 2 shapes occupy the same pixels, the last drawn "wins." import java.awt.graphics; import java.awt.color; public class Car { 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);

Drawing with loops The x,y,w,h expressions can use the loop counter variable: panel.setbackground(color.yellow); g.setcolor(color.red); for (int i = 1; i <= 10; i++) { // x y w h g.filloval(100 + 20 * i, 5 + 20 * i, 50, 50); } Nested loops can be used with graphics: g.setcolor(color.blue); for (int x = 1; x <= 4; x++) { for (int y = 1; y <= 9; y++) { g.drawstring("java", x * 40, y * 25); } }

Zero-based loops Beginning at 0 and using < can make calculating coordinates easier. DrawingPanel panel = new DrawingPanel(150, 140); Graphics g = panel.getgraphics(); // horizontal line of 5 20x20 rectangles starting // at (11, 18); x increases by 20 each time for (int i = 0; i < 5; i++) { g.drawrect(11 + 20 * i, 18, 20, 20); } Exercise: Write a variation of the above program that draws the output at right. The bottom-left rectangle is at (11, 98). for (int i = 0; i < 5; i++) { g.drawrect(11 + 20 * i, 98-20 * i, 20, 20); }