PaintShape.java: Difference between revisions
Appearance
m wrong content type |
|||
Line 1: | Line 1: | ||
From: [[Into Java - Part XVI]] | |||
<PRE> | |||
import java.awt.*; | |||
public class PaintShape { | |||
private boolean filledShape; | |||
private Color paintColor; | |||
private int shape; | |||
private int startX; | |||
private int startY; | |||
private int stopX; | |||
private int stopY; | |||
private Rectangle rect; | |||
public PaintShape(boolean filled, Color c, | |||
int sh, int x, int y) { | |||
filledShape = filled; | |||
paintColor = c; | |||
shape = sh; | |||
startX = x; | |||
startY = y; | |||
} | |||
public void setStop(int x, int y) { | |||
stopX = x; | |||
stopY = y; | |||
int xS, wid, yS, hig; // speedy declarations | |||
if (startX < stopX) { | |||
xS = startX; | |||
wid = stopX - startX; | |||
} else { | |||
xS = stopX; // avoid negative width | |||
wid = startX - stopX; | |||
} | |||
if (startY < stopY) { | |||
yS = startY; | |||
hig = stopY - startY; | |||
} else { | |||
yS = stopY; // avoid negative height | |||
hig = startY - stopY; | |||
} | |||
/* make the rect bigger than shape itself */ | |||
rect = new Rectangle(xS-1, yS-1, wid+2, hig+2); | |||
} | |||
public boolean contains(Point xy) { | |||
return rect.contains(xy); | |||
} | |||
public void paintComponent(Graphics g) { | |||
Color oldColor = g.getColor(); | |||
g.setColor(paintColor); | |||
if (shape == PaintPanel.LINE) { // that is line | |||
g.drawLine(startX, startY, stopX, stopY); | |||
} else { | |||
/* make four temp variables to avoid trouble */ | |||
int startXX = startX; | |||
int startYY = startY; | |||
int width = stopX - startX; | |||
int height = stopY - startY; | |||
if (width < 0) { // not good | |||
startXX = stopX; | |||
width = -width; | |||
} else { | |||
startXX = startX; | |||
} | |||
if (height < 0) { // not good | |||
startYY = stopY; | |||
height = -height; | |||
} else { | |||
startYY = startY; | |||
} | |||
if (shape == PaintPanel.RECTANGLE) { // that is rectangle | |||
if (filledShape) { | |||
g.fillRect(startXX, startYY, width, height); | |||
} else { | |||
g.drawRect(startXX, startYY, width, height); | |||
} | |||
} else { // remaining is oval | |||
if (filledShape) { | |||
g.fillOval(startXX, startYY, width, height); | |||
} else { | |||
g.drawOval(startXX, startYY, width, height); | |||
} | |||
} | |||
} | |||
g.setColor(oldColor); | |||
} | |||
} | |||
</PRE> | |||
[[Category:Into Java]] |
Latest revision as of 23:53, 13 June 2020
From: Into Java - Part XVI
import java.awt.*; public class PaintShape { private boolean filledShape; private Color paintColor; private int shape; private int startX; private int startY; private int stopX; private int stopY; private Rectangle rect; public PaintShape(boolean filled, Color c, int sh, int x, int y) { filledShape = filled; paintColor = c; shape = sh; startX = x; startY = y; } public void setStop(int x, int y) { stopX = x; stopY = y; int xS, wid, yS, hig; // speedy declarations if (startX < stopX) { xS = startX; wid = stopX - startX; } else { xS = stopX; // avoid negative width wid = startX - stopX; } if (startY < stopY) { yS = startY; hig = stopY - startY; } else { yS = stopY; // avoid negative height hig = startY - stopY; } /* make the rect bigger than shape itself */ rect = new Rectangle(xS-1, yS-1, wid+2, hig+2); } public boolean contains(Point xy) { return rect.contains(xy); } public void paintComponent(Graphics g) { Color oldColor = g.getColor(); g.setColor(paintColor); if (shape == PaintPanel.LINE) { // that is line g.drawLine(startX, startY, stopX, stopY); } else { /* make four temp variables to avoid trouble */ int startXX = startX; int startYY = startY; int width = stopX - startX; int height = stopY - startY; if (width < 0) { // not good startXX = stopX; width = -width; } else { startXX = startX; } if (height < 0) { // not good startYY = stopY; height = -height; } else { startYY = startY; } if (shape == PaintPanel.RECTANGLE) { // that is rectangle if (filledShape) { g.fillRect(startXX, startYY, width, height); } else { g.drawRect(startXX, startYY, width, height); } } else { // remaining is oval if (filledShape) { g.fillOval(startXX, startYY, width, height); } else { g.drawOval(startXX, startYY, width, height); } } } g.setColor(oldColor); } }