Найти в Дзене
yagdmitrij

Обзор класса Graphics2D

Первая статья, посвященная обзорам пакетов java, и в ней мы рассмотрим класс Graphics2D из пакета java.awt, расширяющий класс Graphics. Данные классы предназначены для отрисовки различных фигур на визуальных компонентах с помощью метода: public void paintComponent(Graphics g) которому в качестве параметра передается экземпляр класса Graphics. В принципе уже можно в теле этого метода писать код, который будет выводить наше художество. Однако нам нужно использовать Graphics2D, расширяющий класс Graphics и предоставляющий расширенные возможности для рисования. А для этого нам нужно выполнить приведение типов в теле метода: public void paintComponent(Graphics g) { Graphics2D g2=(Graphics2D) g; } 1. Первый метод, который мы рассмотрим, называется: public abstract void setRenderingHint(RenderingHints.Key hintKey, Object hintValue) который улучшает визуальное представление прорисованных объектов. На рисунке ниже показано, как сглаживаются контуры прямоугольников и текста. Класс RenderingHint

Первая статья, посвященная обзорам пакетов java, и в ней мы рассмотрим класс Graphics2D из пакета java.awt, расширяющий класс Graphics. Данные классы предназначены для отрисовки различных фигур на визуальных компонентах с помощью метода:

public void paintComponent(Graphics g)

которому в качестве параметра передается экземпляр класса Graphics. В принципе уже можно в теле этого метода писать код, который будет выводить наше художество. Однако нам нужно использовать Graphics2D, расширяющий класс Graphics и предоставляющий расширенные возможности для рисования. А для этого нам нужно выполнить приведение типов в теле метода:

public void paintComponent(Graphics g) {
Graphics2D g2=(Graphics2D) g;
}

1. Первый метод, который мы рассмотрим, называется:

public abstract void setRenderingHint(RenderingHints.Key hintKey, Object hintValue)

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

setRenderingHint
setRenderingHint

Класс RenderingHints предоставляет методу различные параметры, с которыми можно поэкспериментировать.

2. setStroke(Stroke s) метод предоставляет варианты отрисовки линий и контуров фигур. В частности, с помощью метода можно регулировать толщину линий. Метод принимает в качестве параметра экземпляр класса BasicStroke, конструкторы которого предоставляют широкий выбор значений. Параметрами данных конструкторов могут быть как константы класса, так и просто значения от 0 до 2. Интересный вариант предоставляет конструктор new BasicStroke ( 5f,0,0,20F,htrih,0F ), где 5f – толщина линии (можно без f, так компилятору указывается, что значение имеет тип float); 0,0 – без оформления; 20f- расстояние между штрихами; htrih – массив, где задается длина чередующихся штрихов; 0F – элемент массива с которого начинаются штрихи.

setStroke
setStroke

3. public abstract void rotate(double theta, double x, double y) метод поворачивает, на первый взгляд, нарисованную фигуру. Однако, на мой взгляд, вращается сама панель или «холст», на которой нарисованы и написаны элементы. Параметры метода:

theta – угол поворота в радианах;

x,y – координаты точки вращения, в нашем примере она установлена примерно на середине зеленого прямоугольника.

rotate
rotate

4. abstract void translate (int x, int y) – с помощью данного метода устанавливается новая точка начала координат.

translate
translate

5. public abstract void scale(double sx, double sy) – маштабирование, где

sx – множитель координаты X относительно предыдущей;

sy - множитель координаты Y относительно предыдущей.

scale
scale

6. public abstract void setBackground(Color color) – цвет фона очистки области. Применяется совместно с методом clearRect().

setBackground
setBackground

Мы рассмотрели небольшую часть методов, входящих в пакет java.awt.Graphics2D. Методы, которые предоставляют отрисовку различных фигур, типа drawRect…, здесь не рассматривали. Однако можно изучить данный класс самостоятельно, причем на русском языке с кривым переводом).

Ставьте лайки и подписывайтесь на канал и вас ждет масса увлекательных статей по java.