Учебное пособие: Многопоточность и работа с потоками

Dimension d = getSize();

// Продолжение примера 1...

Метод paint() начинается с получения экземпляра grкласса Graphics2D простым приведением аргумента gr к типу Graphics2D. Затем, методом getRotatelnstance() определяется поворот на 45° против часовой стрелки вокруг точки (250.0, 150.0). Это преобразование— экземпляр at класса AffineTransform. Метод concatenate(), выполняемый объектом at, добавляет к этому преобразованию сжатие в два раза по обеим осям координат и перенос начала координат в точку (100.0, 60.0). Наконец, композиция этих преобразований устанавливается как текущее преобразование объекта g методом setTransform().

Преобразование выполняется в следующем порядке. Сначала пространство пользователя сжимается в два раза вдоль обеих осей, затем начало координат пользователя — левый верхний угол — переносится в точку (100.0, 60.0) пространства графического устройства. Потом картинка поворачивается на угол 45° против часовой стрелки вокруг точки (250.0, 150.0).

Результат этих преобразований показан на рис. 3.

Рис. 3. Преобразование координат

Рисование фигур средствами Java2D

Характеристики пера для рисования фигур описаны в интерфейсе Stroke. В Java 2D есть пока только один класс, реализующий этот интерфейс — класс BasicStroke.

Класс BasicStroke

Конструкторы класса BasicStroke определяют характеристики пера. Основнойконструктор

BasicStroke(float width, int cap, int join, float miter, float[] dash, float dashBegin)

задает:

· толщину пера width в пикселах;

· оформление конца линии cap; это одна из констант:

o CAP_ROUND — закругленный конец линии;

o CAP_SQUARE — квадратный конец линии;

o CAP_BUTT — оформление отсутствует;

· способ сопряжения линий join; это одна из констант:

o JOIN_ROUND — линии сопрягаются дугой окружности;

o JOIN_BEVEL — линии сопрягаются отрезком прямой, перпендикулярным биссектрисе угла между линиями;

o JOIN_MITER — линии просто стыкуются;

· расстояние между линиями miter, начиная с которого применяется сопряжение JOIN_MITER;

· длину штрихов и промежутков между штрихами — массив dash; элементы массива с четными индексами задают длину штриха в пикселах, элементы с нечетными индексами — длину промежутка; массив перебирается циклически;

· индекс dashBegin, начиная с которого перебираются элементы массива

· dash.

Остальные конструкторы задают некоторые характеристики по умолчанию:

· BasicStroke (float width, int cap, int join, float miter) — сплошнаялиния;

· BasicStroke (float width, int cap, int join) — сплошнаялинияссопряжением JOIN_ROUND или JOIN_BEVEL; длясопряжения JOIN_MITER задаетсязначение miter = 10.0f;

· BasicStroke (float width) — прямойобрез CAP_SQUARE исопряжение JOIN_MITER созначением miter = 10.0f;

К-во Просмотров: 396
Бесплатно скачать Учебное пособие: Многопоточность и работа с потоками