Lec_06
.pdfЛекция 6 Java 2D
А. О. Шигаров shigarov@icc.ru
Классы Graphics и Graphics2D
• public abstract class Graphics extends Object
draw...
fill...
set…
•public abstract class Graphics2D extends Graphics
+draw(Shape s)
+fill(Shape s)
+setPaint(Paint paint)
+setStroke(Stroke s)
+…
Геометрические примитивы из пакета java.awt.geom
Классы (геом. |
Описание |
Фигура |
примитив) |
|
|
|
|
|
Point2D |
//Create Point2D.Double |
|
Point2D.Double |
Point2D.Double point = new Point2D.Double(x, y); |
|
Point2D.Float |
setLocation(double x, double y) |
|
Point |
setLocation(Point2D p) |
|
|
|
|
Line2D |
Line2D.Float(float X1, float Y1, float X2, float Y2) |
|
Line2D.Double |
Line2D.Float(Point2D p1, Point2D p2) |
|
Line2D.Float |
// draw Line2D.Double |
|
|
g2.draw(new Line2D.Double(x1, y1, x2, y2)); |
|
|
|
|
QuadCurve2D |
// create new QuadCurve2D.Float |
|
QuadCurve2D.Double |
QuadCurve2D q = new QuadCurve2D.Float(); |
|
QuadCurve2D.Float |
// draw QuadCurve2D.Float with set coordinates |
|
|
q.setCurve(x1, y1, ctrlx, ctrly, x2, y2); g2.draw(q); |
|
|
|
|
CubicCurve2D |
// create new CubicCurve2D.Double |
|
CubicCurve2D.Double |
CubicCurve2D c = new CubicCurve2D.Double(); |
|
CubicCurve2D.Float |
// draw CubicCurve2D.Double with set coordinates |
|
|
c.setCurve(x1, y1, ctrlx1, ctrly1, ctrlx2, ctrly2, x2, y2); |
|
|
g2.draw(c); |
|
|
|
|
Геометрические примитивы из пакета java.awt.geom
Классы (геом. примитив) |
Описание |
Фигура |
||
|
|
|
|
|
Rectangle2D |
Rectangle2D rect = |
|
|
|
Rectangle2D.DoubleRectan |
new Rectangle2D.Double(x, y, width, height); |
|
|
|
|
|
|
||
gle2D.Float |
// draw Rectangle2D.Double |
|
|
|
Rectangle |
g2.draw(rect); |
|
|
|
|
|
|
|
|
RoundRectangle2D |
// draw RoundRectangle2D.Double |
|
|
|
RoundRectangle2D.Double |
g2.draw(new RoundRectangle2D.Double(x, y, |
|
|
|
RoundRectangle2D.Float |
width, height, arcwidth, archeight)); |
|
|
|
|
|
|
|
|
Ellipse2D |
// draw Ellipse2D.Double |
|
|
|
Ellipse2D.Double |
Ellipse2D oval = new Ellipse2D.Double(x, y, |
|
|
|
Ellipse2D.Float |
width, height) |
|
|
|
|
g2.draw(oval); |
|
|
|
|
|
|
|
|
Arc2D |
// draw Arc2D.Double |
|
|
|
Arc2D.Double |
g2.draw(new Arc2D.Double(x, y, width, height, |
|
|
|
Arc2D.Float |
90, 135, Arc2D.OPEN)); |
|
|
|
|
|
|
|
|
|
|
|
|
|
Рисование произвольных фигур
public void paint(Graphics g) { Graphics2D g2 = (Graphics2D) g;
//Рисование произвольного пути
GeneralPath path = new GeneralPath(); path.moveTo(0, 0);
path.lineTo(100, 0); path.lineTo(200, 100); path.lineTo(0, 100); path.lineTo(0, 0); path.closePath(); g2.draw(path);
//Рисование произвольного полигона
Polygon polygon =
new Polygon(new int[] {0, 100, 50}, new int[] {0, 0, 50}, 3); g2.fillPolygon(polygon);
}
Контуры геометрических примитивов
public void paint(Graphics g) {
Graphics2D g2 = (Graphics2D) g;
// Настройка параметров рисования контуров final float lineWidth = 3F;
final float dash[] = {20F, 5F}; final Stroke dashed =
new BasicStroke(lineWidth, BasicStroke.CAP_ROUND, BasicStroke.JOIN_MITER, 1F, dash, 0F);
g2.setStroke(dashed);
// Рисование геометрических примитивов
g2.draw(new RoundRectangle2D.Double(10, 10, 100, 50, 10, 10)); g2.drawOval(100, 100, 100, 100);
g2.drawLine(0, 0, 100, 100);
}
Заливка геометрических примитивов
public void paint(Graphics g) {
Graphics2D g2 = (Graphics2D) g;
// Настройка параметров заливки фигур
Paint p = new GradientPaint(0, 0, Color.RED, 100, 0, Color.YELLOW); g2.setPaint(p);
//Закрашивание геометрических примитивов g2.fill(new Ellipse2D.Double(0, 100, 100, 50));
//Настройка параметров заливки фигур
Paint p2 = new Color(0, 112, 192); g2.setPaint(p2);
// Закрашивание геометрических примитивов
Polygon polygon = new Polygon(new int[] {0, 100, 50}, new int[] {0, 0, 50}, 3); g2.fillPolygon(polygon);
}
Текст
public void paint(Graphics g) { Graphics2D g2 = (Graphics2D) g;
Font font = new Font("Times New Roman", Font.BOLD, 72); g2.setFont(font);
g2.drawString("Hello World!", 50, 50);
g2.setFont(new Font("Comic Sans MS", Font.PLAIN, 40)); g2.setColor(Color.RED);
g2.drawString("Red Text", 100, 100);
}
public void init() {
// Вывод всех доступных шрифтов
GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment(); String[] fontFamilies = ge.getAvailableFontFamilyNames();
for (String fontFamily: fontFamilies) System.out.println(fontFamily);
}
Изображения. Загрузка из файла
import java.awt.image.*; // Image API import javax.imageio.*; // Image I/O API
…
BufferedImage image = null; try {
File file = new File("picture.jpg") image = ImageIO.read(file);
}catch (IOException e) { … } try {
URL url = new URL(getCodeBase(), "picture.jpg"); image = ImageIO.read(url);
}catch (IOException e) { … }
…
Изображения. Отрисовка изображения
// Методы Graphics для отрисовки изображения
boolean Graphics.drawImage(Image img, int x, int y, ImageObserver observer);
boolean Graphics.drawImage(Image img, int dstx1, int dsty1, int dstx2, int dsty2, int srcx1, int srcy1, int srcx2, int srcy2, ImageObserver observer);
boolean Graphics.drawImage(Image img, …);