Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Lec_06

.pdf
Скачиваний:
8
Добавлен:
31.05.2015
Размер:
528.35 Кб
Скачать

Лекция 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, …);

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]