Java Software Solutions Foundations of Program Design

Download Report

Transcript Java Software Solutions Foundations of Program Design

Graphics -- Introduction
The use of graphics is common among modern
software systems
Java has strong API support for graphics in the
java.awt (abstract windowing toolkit) package
This lesson focuses on:
the coordinate system for Java graphics
the use of color
drawing shapes such as lines, ovals, rectangles,
etc.
the use of fonts
basic animation techniques
1
The Graphics Class
An object of the Graphics class represents a
particular drawing surface
It defines a graphics context in which drawn
shapes will be rendered
The Graphics class contains methods for drawing
various shapes and controlling visual aspects like
font and color
An applet has a graphics context, which is
automatically passed to the paint method when it
is called
2
The Coordinate System
A simple two-dimensional coordinate system exists
for each graphics context (or drawing surface)
Each point on the coordinate system represents a
single pixel
The top left corner of the area is coordinate <0, 0>
A drawing surface has a particular width and height
Anything drawn outside of that area will not be
visible
See Coordinates.java show
3
The Coordinate System
<0, 0>
x
X
y
<x, y>
<width-1, height-1>
Y
4
Color
The Color class is used to define and manage the
color in which shapes are drawn
Colors are defined by their RGB value, which
defines the relative contribution of the primary
colors red, green, and blue
Each drawing surface has a foreground color and a
background color
The setColor method of the Graphics class
defines the foreground color, and the
setBackground method of the component (the
applet) sets the background color
5
Color
The Color class contains several predefined
colors, defined as public, static constants
See Nature.java
show it
Many other colors can be defined using the
constructor of the Color class
Over 16 million colors can be defined, but humans
cannot distinguish between many similar colors
Furthermore, the hardware of most systems has
limitations to the color options available
6
XOR Mode
Drawing in normal mode causes shapes of the
same color to blend together
Drawing in XOR mode causes the overlapping
portions of the shapes to be rendered in a
contrasting color
This effect can be used to "erase" a shape by
redrawing it in the same color in the same spot
while in XOR mode
See XOR_Demo.java
show it
7
Drawing Shapes
The Graphics class contains methods for drawing
several specific shapes:
lines, ovals, rectangles, arcs, polygons, and polylines
Most shapes can be drawn filled or unfilled
A line, drawn with the drawLine method, is
always one pixel wide and cannot be filled
8
Ovals
An oval is defined by its bounding rectangle:
width
height
The methods that draw an oval take four
parameters, all integers:
drawOval (x, y, width, height)
fillOval (x, y, width, height)
9
Ovals
The first two parameters are the <x, y> coordinate
of the top-left corner of the bounding rectangle
The third and fourth parameters specify the width
and height of the bounding rectangle
The drawOval method draws an unfilled oval and
the fillOval method draws a filled (opaque) oval
See Ovals.java and Rotating_Disk.java
show it
show it
10
Rectangles
Rectangles can be drawn
filled or unfilled
with squared or rounded corners
with a slight three-dimensional effect or not
The primary parameters for all rectangle drawing
methods define the upper left corner of the
rectangle and its width and height
The shape of the rounded corner of a rounded
rectangle are defined by an arc width and height
11
Rectangles
A three dimensional rectangle is shown using a
small highlight on two sides of the rectangle
The highlight appears on the bottom and right or
the top and left as specified by a boolean
parameter to the 3D drawing methods
See Rectangles.java, show it
Rounded_Rectangles.java, show it and
Three_D_Rectangles.java
show it
12
Arcs
An arc is defined as a segment of an oval
The first four parameters to the arc drawing
methods define the bounding rectangle of the oval
(top left corner, width, and height)
The other two parameters define the start angle
and the arc angle
The start angle indicates where the arc begins and
the arc angle determines how far the arc sweeps
across its defining oval
See Arc.java show it
13
Arcs
The start angle can be specified using both positive
and negative values:
90
-270
45
-315
0
360
-360
180
-180
270
-90
14
Arcs
An arc angle can also be positive or negative
A positive arc angle sweeps counterclockwise, and
a negative arc angle sweeps clockwise
Therefore, the same arc can be specified using four
different combinations of start and arc angles
Arcs can also be filled or unfilled
See Arcs.java
show it
15
Polygons
A polygon is a multisided figure defined by a series
of ordered points
Line segments connecting the points form the
polygon
The points are defined by corresponding arrays of x
and y coordinate values, and can already be
incorporated into an object of the Polygon class
Polygons are closed, forming a line segment from
the last point back to the first
See Polygons.java show it
16
Polylines
A polyline is similar to a polygon except that it is
not closed
That is, there is no line segment from the last point
back to the first unless explicitly specified
They are convenient for specifying certain kinds of
complex shapes
Polylines cannot be filled
See Polylines.java
show
17
Fonts
A font defines the look of each character when it is
printed or drawn
The Font class provides methods for specifying
fonts in a Java program
Each computer system supports a specific set of
fonts
See Font_Lister.java
The setFont method defines the current font for
a program
18
Fonts
A font is defined using the Font class constructor
and a combination of:
font name
font style: plain, bold, italic, or bold+italic
font size, in points
Constants are defined in the Font class to specify
the font style
See Entropy.java
19
Animations
Simple animations can be accomplished by drawing
a shape, then erasing it, then drawing it again in a
slightly altered position
Erasing can be accomplished through careful use of
XOR mode
Timing must be controlled so that the animation
does not move too fast
See Bouncing_Ball.java
show it
20