Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Java.doc
Скачиваний:
11
Добавлен:
20.04.2019
Размер:
936.45 Кб
Скачать

JavaСтандартная библиотека Java включает в себя набор классов, реализующих богатый набор средств для разработки графических приложений, включая

обработку растровой графики;

обработку векторной графики;

работу со шрифтами; и т.д.

Совокупность данных средств принято называть Java2d.

2D

Основой для создания графических приложений на языке Java является абстрактный класс Graphics.

Методы данного класса позволяют осуществлять построение графических примитивов, таких как отрезки, дуги, прямоугольники, многоугольники, эллипсы и т.д.

Данные операции существенно зависят от используемой графической оболочки операционной системы, поэтому в программах никогда не создаются объекты класса Graphics – за это отвечает среда исполнения.

Получить ссылку на экземпляр объекта Graphics, связанный с тем или иным компонентом, можно с помощью его метода getGraphics():

Graphics gr = component.getGraphics();

Это позволяет выполнять графические построения на поверхности компонента, например, при обработке событий.

Обычно при необходимости выполнить графические построения используют собственные классы-компоненты, основанные, например, на компоненте Canvas.

Данный компонент отображается в виде прямоугольной области, заполненной фоновым цветом. Для прорисовки собственного содержимого достаточно перегрузить метод paint().

public MyComponent extends Canvas {

// ... описание полей и методов ...

public void paint(Graphics gr) {

super.paint(gr);

// прорисовка собственного содержимого

}

}

Основные методы класса Graphics делятся на несколько групп:

– методы для построения линий draw***();

– методы для построения областей fill***();

– методы для изменения параметров set***().

Методы для построения линий

void drawLine(int x1, int y1, int x2, int y2) построить отрезок;

void drawRect(int x, int y, int width, int height) построить границу прямоугольника;

void drawOval(int x, int y, int width, int height) построить границу эллипса;

void drawPolygon(int[ ] x, int[ ] y, int n) построить границу n-угольника.

Все построения выполняются текущим цветом.

Методы для построения областей

void fillRect(int x, int y, int width, int height) построить внутреннюю область прямоугольника;

void fillOval(int x, int y, int width, int height) построить внутреннюю область эллипса;

void fillPolygon(int[ ] x, int[ ] y, int n) построить внутреннюю область n-угольника;

Все построения выполняются текущим цветом.

Методы для изменения параметров

void setColor(Color color) задать цвет для построений;

Для построения геометрических фигур, у которых различные цвета границы и внутренней области, требуется дважды задавать текущий цвет.

Пример. Синий прямоугольник с зеленой границей

gr.setColor(Color.BLUE);

gr.fillRect(x1,y1,x2,y2);

gr.setColor(Color.GREEN);

gr.drawRect(x1,y1,x2,y2);

Методы класса Graphics позволяют выполнять элементарные графические построения.

Более широкими возможностями обладает класс Graphics2D:

– построение линий различных видов и стилей;

– заполнение областей текстурами и градиентами;

– выполнение преобразований координат при построении.

Выбор стиля линииvoid setStroke(Stroke s)

Классы, описывающие линии, должны реализовать интерфейс Stroke.

Основным классом является BasicStroke.

При создании объектов этого класса можно задавать различную толщину линий, различные способы завершения и сопряжения линий, создавать разнообразные пунктирные и штриховые линии.

Пример. Создание линии толщиной 2.5 пикселя.

Stroke stroke = new BasicStroke(2.5);

gr2d.setStroke(stroke);

Выбор стиля заливкиvoid setPaint(Paint p)

Классы, описывающие заливку областей, должны реализовать интерфейс Paint:

Color обеспечивает одноцветную закраску замкнутой области;

TexturePaint обеспечивает заполнение замкнутой области узором (текстурой);

GradientPaint обеспечивает плавное изменение цвета вдоль некоторого направления

Пример. Построение красно-синего прямоугольника.

Paint paint = new GradientPaint(

x, y, Color.RED,

x+width, y, Color.BLUE);

gr2d.setPaint(paint);

gr2d.fillRectangle(x,y,width,height);

Преобразование координат – void setTransform(AffineTransform at)

Класс AffineTransform и его потомки позволяют выполнять аффинное преобразование координат: параллельный перенос, поворот, сдвиг, масштабирование и т.д., а также их композицию.

Частные случаи аффинного преобразования могут быть заданы путем вызова методов класса Graphics2D:

void rotate(double theta) выполнить поворот на theta радиан;

void scale(double sx, double sy) выполнить масштабирование с коэффициентами sx, sy по оси Ох и Оу, соответственно;

void shear(double shx, double shy) выполнить сдвиг с коэффициентами shx, shy;

void translate(double tx, double ty) выполнить параллельный перенос на вектор (tx, ty).

Пример. Вывод надписи под углом 60 градусов.

double alpha=Math.PI/3;

double cos=Math.cos(alpha);

double sin=Math.sin(alpha);

AffineTransform rotate =

new AffineTransform(cos,-sin,sin,cos,100,100);

gr2d.setTransform(rotate);

gr2d.drawString("Надпись под углом PI/3", 0, 0);

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