Алгоритм рисования в Java

Алгоритм рисования в JavaВ исходной версии пакета JDK 1.0(Java Development Kit) механизм для рисования фигур выглядел очень просто. Можно было только выбирать необходимый цвет и режим рисования и вызывать методы класса Graphics, вроде drawRect() или fillOval(). API-интерфейс в Java 2D поддерживает гораздо больше возможностей.В частности он позволяет делать следующее:

  • Легко создавать множество различных фигур;
  • управлять штрихом, то есть пером, прорисовывающим границы фигур;
  • заливать фигуры любым сплошным цветом, используя различные оттенки и узоры;
  • использовать трансформации для перемещения, масштабирования, поворачивания и растягивания фигур;
  • отсекать фигуры так, чтобы они занимали только какую-то определенную область;
  • выбирать правила композиции для описания того, как пиксели новой фигуры должны комбинироваться с пикселями уже существующей фигуры;
  • задавать рекомендации по визуализации для достижения компромисса между скоростью загрузки и качеством рисования;

Для рисования фигур требуется выполнять следующие действия:

  1. Получить объект класса Graphics2D. Этот класс является подклассом класса Graphics. Начиная с версии Java SE 1.2, методы вроде paint() и paintComponent() автоматически получают объект класса Graphics2D. Поэтому остается лишь применить приведение типа, как показано ниже:
  2. Использовать метод setRenderingHints() для добавления рекомендации по визуализации(rendering hints) в целях достижения компромисса между скоростью и качеством рисования.
  3. Использовать метод setStroke() для указания штриха(stroke), который должен применяться для прорисовки контура фигуры. Для этого штриха можно выбирать толщину, а также сплошную или пунктирную линию.
  4. Использовать метод setPaint() для указания расцветки(paint). Расцветка подразумевает закрашивание областей, вроде пути штриха или внутренней части фигуры. Она может состоять из одного сплошного цвета, нескольких меняющийся оттенков или мозаичных узоров.
  5. Использовать метод setClip() для установки области отсечения.
  6. Использовать метод setTransform() для преобразования(трансформации) координат рисунка из относительной пользовательской системы координат в абсолютную систему координат устройства. Это преобразование следует применять в тех случаях, когда проще создать фигуру в пользовательской системе координат, чем использовать координаты, выраженные в пикселях.
  7. Использовать метод setComposite() для задания правил композиции, описывающих, каким именно образом новые пиксели должны объединяться с уже существующими.
  8. Создавать фигуру. В Java 2D API предусмотрено много объектов-фигур и методов для их комбинирования.
  9. Рисовать или заливать фигуру. Под рисованием подразумевается очерчивание контуров фигуры, а под заливкой — закрашивание ее внутренней части.

Разумеется, на практике выполнять все эти действия обычно не нужно, поэтому для многих параметров двухмерного(2D) графического контекста предусмотрены значения по умолчанию, изменять которые можно только в случае особой необходимости.