Геометрические фигуры Java — это совокупность классов, определяющих общие геометрические объекты, а именно, точки, строки, кривые, и прямоугольники.
Введение
Если изучать какой-либо компонент с позиций MVC (Model-View-Controller), то есть схемы подразделения данных приложения и управляющей логики, то он имеет в своем составе следующие части:
- Model, то есть, модель, хранящая в себе данные о состоянии компонента, на базе которой может быть построен внешний облик компонента.
- View, то есть, непосредственное визуальное отображение компонента.
- Controller, то есть, составная часть, которая должна отвечать за управление компонентом (операции от клавиатуры, мыши и других устройств ввода).
Практически весь набор стандартных компонентов библиотеки Swing, предназначенной для формирования графического интерфейса для программ на языке Java, построен по принципам MVC. Например, в JButton имеется ButtonModel, которая отвечает за поведение и состояние кнопки (Controller и Model), а ButtonUI призван отвечать за внешнее ее отображение (View).
Геометрические фигуры Java
Следует отметить, что интерфейс всегда выполняет очень важную роль в успешности каждого приложения. Но в зависимости от категории пользователей приложения роль интерфейса может оказаться все-таки второстепенной, а может и наоборот, стать первостепенной и наиболее важной. Например, в случае с играми или же разными программами, предназначенными для редактирования, интерфейс и удобство его применения способны решить практически все. В частности, по той причине, что это приложения, которые пользователи достаточно регулярно используют или же в течение длительного времени.
Рассмотрим стандартные средства, которые предоставляет класс Graphics2D, а также определенные методики и способы для прорисовки компонентов любого уровня сложности. Для каждого компонента, любой самой простой вещи необходимо прорисовать контуры ее частей. Если выполнять эту операцию вручную, попиксельно, то она превратится в очень трудную задачу. Тем более, когда требуется добавлять к прорисовке сглаживание или какие-нибудь иные эффекты.
Но необходимо отметить, что весь набор стандартных фигур (Line2D, Rectangle2D, RoundRectangle2D, Ellipse2D, Arc2D и другие), которые могут потребоваться для прорисовки уже сформирован. Нужно только задать их координаты и размеры для прорисовки в необходимом месте. А кроме стандартных фигур, имеются также и специфические, к примеру, GeneralPath, которые позволяют оперативно формировать свои собственные фигуры.
Например, имеется некая фигура (Shape shape). Для ее прорисовки можно применить следующие методы:
- Метод g2d.fill(shape), который заполняет все пиксели внутри фигуры.
- Метод 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 имеются следующие настройки:
- KEY_ANTIALIASING – настройка сглаживания фигур (и текста).
- KEY_RENDERING – настройка качества и скорости рендеринга.
- KEY_DITHERING – настройка смешивания цветов при ограниченной палитре.
- KEY_TEXT_ANTIALIASING – настройка сглаживания текста.
- KEY_TEXT_LCD_CONTRAST – регулятор контрастности текста (от 100 до 250) при прорисовке с применением специального сглаживания текста.
- KEY_FRACTIONALMETRICS – настройка «аккуратности» прорисовки текстовых символов.
- KEY_INTERPOLATION – настройка, которая отвечает за модернизацию пикселей изображений при прорисовке (к примеру, при развороте изображения).
- KEY_ALPHA_INTERPOLATION – настройка качества и скорости обработки альфа значений.
- KEY_COLOR_RENDERING – настройка качества и скорости обработки цвета.
- KEY_STROKE_CONTROL – настройка возможности модернизации геометрии фигур для улучшения результирующего вида.
Практически все эти настройки, как правило, устанавливаются в состоянии «по умолчанию». Однако, они способны оказать помощь и в отдельных специфичных случаях. Например, установка KEY_INTERPOLATION в VALUE_INTERPOLATION_BILINEAR позволяет не потерять качество изображения при его видоизменениях (вращении, сжатии, сдвиге и прочих) или же повысить контрастность текста на выбранном фоне, поменяв KEY_TEXT_LCD_CONTRAST, не затрагивая при этом кодов прорисовки текста.
В любом случае необходимо очень аккуратно применять эти настройки и избегать их «выхода» за границы используемого метода прорисовки.