Справочник от Автор24
Найди эксперта для помощи в учебе
Найти эксперта
+2

Геометрические фигуры Java

Замечание 1

Геометрические фигуры Java — это совокупность классов, определяющих общие геометрические объекты, а именно, точки, строки, кривые, и прямоугольники.

Введение

Если изучать какой-либо компонент с позиций MVC (Model-View-Controller), то есть схемы подразделения данных приложения и управляющей логики, то он имеет в своем составе следующие части:

  1. Model, то есть, модель, хранящая в себе данные о состоянии компонента, на базе которой может быть построен внешний облик компонента.
  2. View, то есть, непосредственное визуальное отображение компонента.
  3. Controller, то есть, составная часть, которая должна отвечать за управление компонентом (операции от клавиатуры, мыши и других устройств ввода).

Практически весь набор стандартных компонентов библиотеки Swing, предназначенной для формирования графического интерфейса для программ на языке Java, построен по принципам MVC. Например, в JButton имеется ButtonModel, которая отвечает за поведение и состояние кнопки (Controller и Model), а ButtonUI призван отвечать за внешнее ее отображение (View).

Геометрические фигуры Java

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

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

«Геометрические фигуры Java» 👇
Помощь эксперта по теме работы
Найти эксперта
Решение задач от ИИ за 2 минуты
Решить задачу
Найди решение своей задачи среди 1 000 000 ответов
Найти

Но необходимо отметить, что весь набор стандартных фигур (Line2D, Rectangle2D, RoundRectangle2D, Ellipse2D, Arc2D и другие), которые могут потребоваться для прорисовки уже сформирован. Нужно только задать их координаты и размеры для прорисовки в необходимом месте. А кроме стандартных фигур, имеются также и специфические, к примеру, GeneralPath, которые позволяют оперативно формировать свои собственные фигуры.

Например, имеется некая фигура (Shape shape). Для ее прорисовки можно применить следующие методы:

  1. Метод g2d.fill(shape), который заполняет все пиксели внутри фигуры.
  2. Метод g2d.draw(shape), который прорисовывает контур фигуры.

За цвет или цвета, в которых выполняется прорисовка, призван отвечать законный наследник класса Paint (g2d.setPaint(Paint paint)), который предоставляет специалисту цвета под все отдельные пиксели области. Наиболее простым вариантом в этом режиме считается любой цвет (Color), который просто возвращает на все пиксели один и тот же цвет. В качестве более сложных примеров можно привести градиентные и текстурные заливки (GradientPaint, TexturePaint и прочие).

На толщину, частоту и тип объединения на углах и краях линии границы прорисовываемого контура фигуры способен влиять установленный Stroke (g2d.setStroke(Stroke)). На сглаживание, качество прорисовки фигур и текста, а также на иные моменты могут влиять разные параметры.

Сглаживание включено в совокупность стандартных средств, которые идут с библиотекой Graphics2D, а именно:

g2d.setRenderingHint (RenderingHints.KEY_ANTIALIASING,

RenderingHints.VALUE_ANTIALIAS_ON).

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

Значение параметра RenderingHints.KEY_ANTIALIASING способно влиять также и на сглаживание текстовых данных, в случае, когда он выбран по умолчанию.

В RenderingHints имеются следующие настройки:

  1. KEY_ANTIALIASING – настройка сглаживания фигур (и текста).
  2. KEY_RENDERING – настройка качества и скорости рендеринга.
  3. KEY_DITHERING – настройка смешивания цветов при ограниченной палитре.
  4. KEY_TEXT_ANTIALIASING – настройка сглаживания текста.
  5. KEY_TEXT_LCD_CONTRAST – регулятор контрастности текста (от 100 до 250) при прорисовке с применением специального сглаживания текста.
  6. KEY_FRACTIONALMETRICS – настройка «аккуратности» прорисовки текстовых символов.
  7. KEY_INTERPOLATION – настройка, которая отвечает за модернизацию пикселей изображений при прорисовке (к примеру, при развороте изображения).
  8. KEY_ALPHA_INTERPOLATION – настройка качества и скорости обработки альфа значений.
  9. KEY_COLOR_RENDERING – настройка качества и скорости обработки цвета.
  10. KEY_STROKE_CONTROL – настройка возможности модернизации геометрии фигур для улучшения результирующего вида.

Практически все эти настройки, как правило, устанавливаются в состоянии «по умолчанию». Однако, они способны оказать помощь и в отдельных специфичных случаях. Например, установка KEY_INTERPOLATION в VALUE_INTERPOLATION_BILINEAR позволяет не потерять качество изображения при его видоизменениях (вращении, сжатии, сдвиге и прочих) или же повысить контрастность текста на выбранном фоне, поменяв KEY_TEXT_LCD_CONTRAST, не затрагивая при этом кодов прорисовки текста.

В любом случае необходимо очень аккуратно применять эти настройки и избегать их «выхода» за границы используемого метода прорисовки.

Дата написания статьи: 26.05.2022
Найди решение своей задачи среди 1 000 000 ответов
Крупнейшая русскоязычная библиотека студенческих решенных задач
Все самое важное и интересное в Telegram

Все сервисы Справочника в твоем телефоне! Просто напиши Боту, что ты ищешь и он быстро найдет нужную статью, лекцию или пособие для тебя!

Перейти в Telegram Bot