1
CSE 331
2D Graphics
slides created by Marty Stepp based on materials by M. Ernst, S. Reges, D. Notkin, R. Mercer, Wikipedia http://www.cs.washington.edu/331/
CSE 331 2D Graphics slides created by Marty Stepp based on - - PowerPoint PPT Presentation
CSE 331 2D Graphics slides created by Marty Stepp based on materials by M. Ernst, S. Reges, D. Notkin, R. Mercer, Wikipedia http://www.cs.washington.edu/331/ 1 Custom components AWT/Swing come with lots of components that you can use to
1
slides created by Marty Stepp based on materials by M. Ernst, S. Reges, D. Notkin, R. Mercer, Wikipedia http://www.cs.washington.edu/331/
2
3
public void paintComponent(Graphics g) { super.paintComponent(g); ... }
4
public class MyCanvas extends JComponent { public MyCanvas() { this.setBackground(Color.WHITE); } public void paintComponent(Graphics g) { super.paintComponent(g); g2.setPaint(Color.BLUE); g2.fillOval(10, 10, 20, 50); } }
5
draw any following text with the given font setFont(font) an image at the given x/y position and size drawImage(Image, x, y, [w, h], panel) text with bottom-left at (x, y) drawString(text, x, y)
height with top-left at (x, y) drawOval(x, y, width, height) fill largest oval that fits in a box of size width * height with top-left at (x, y) fillOval(x, y, width, height) paint any following shapes in the given color setColor(color) fill rectangle of size width * height with top-left at (x, y) fillRect(x, y, width, height)
width * height with top-left at (x, y) drawRect(x, y, width, height) line between points (x1, y1), (x2, y2) drawLine(x1, y1, x2, y2)
Description Method name
6
Why risk breaking it by adding new features to the same file?
7
sets "rendering hints" such as anti-aliasing and smoothing
setRenderingHint( key, value)
description
method name
adds a transformation that will be applied to all shapes
transform(t)
gives a slanted perspective to future drawn shapes
shear(shx, shy)
moves any future drawn shapes by the given x/y amounts
translate(dx, dy)
resizes any future drawn shapes by the given x/y factors
scale(sx, sy)
rotates any future drawn shapes by the given angle (radians)
rotate(angle)
returns or sets the current line stroke style used for drawing (can be thin/thick, solid/dashed/dotted, etc.)
getStroke(), setStroke(Stroke)
returns or sets the current paint used for drawing (Color is one kind of Paint, but there are others)
getPaint(), setPaint(Paint)
draws the outline and interior of a given shape object
fill(Shape)
draws the outline of a given shape object (replaces drawRect, etc.)
draw(Shape)
8
An arc, which is a portion of an ellipse.
Line2D.Double(p1, p2) A line between two points.
A customizable polygon.
9
description
method name
whether this shape touches the given rectangular region
intersects(x,y,w,h) intersects(rectangle)
various corner or center coordinates within the shape
getCenterX/Y() getMinX/Y() getMaxX/Y()
a rectangle representing the bounding box around this shape
getBounds()
whether the given point is inside the bounds of this shape
contains(x, y) contains(point) contains(rectangle)
10
public class MyCanvas extends JComponent { public MyCanvas() { this.setBackground(Color.WHITE); } public void paintComponent(Graphics g) { super.paintComponent(g); Graphics2D g2 = (Graphics2D) g; Shape shape = new Ellipse2D.Double(10, 10, 20, 50); g2.setPaint(Color.BLUE); g2.fill(shape); } }
11
(a simple single-colored paint) public Color(int r, int g, int b) public Color(int r, int g, int b, int alpha)
(a smooth transition between 2 colors) public GradientPaint(float x1, float y1, Color color1, float x2, float y2, Color color2)
(use an image as a "paint" background)
12
Graphics2D public void setStroke(Stroke s) Sets type of drawing pen (color, width, style) that will be used by this Graphics2D.
A pen stroke for drawing outlines. public BasicStroke(float width) public BasicStroke(float width, int cap, int join) public BasicStroke(float width, int cap, int join, float miterlimit, float[] dash, float dash_phase)
CAP_BUTT, CAP_ROUND, CAP_SQUARE
JOIN_BEVEL, JOIN_MITER, JOIN_ROUND
13
... public void update(Observable o, Object arg) { myView.repaint(); // perhaps this.repaint(); }
14
15
A blank graphic image buffer surface onto which you can draw public BufferedImage(int w, int h, int type)
public Graphics getGraphics()
you can draw a BufferedImage onto the screen from within the paintComponent method of your canvas: