Spec-Zone .ru
спецификации, руководства, описания, API
Содержание документации
Содержание | Предыдущий | Следующий

  Глава 3

Конфигурации

Java 2D™ API обеспечивает несколько классов, которые определяют общие геометрические объекты, такие как точки, строки, кривые, и прямоугольники. Эти новые классы геометрии являются частью java.awt.geom пакет. Для обратной совместимости, классы геометрии, которые существовали в предыдущих версиях программного обеспечения JDK, такой как Rectangle, Point, и Polygon, останьтесь в java.awt пакет.

Java 2-D конфигурации API такой как GeneralPath, Arc2D, и Rectangle2D реализуйте Shape интерфейс, определенный в java.awt. Shape обеспечивает общий протокол для описания и осмотра геометрических объектов пути. Новый интерфейс, PathIterator, определяет методы для того, чтобы получить элементы от геометрии.

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

3.1 Интерфейсы и Классы

Следующие таблицы приводят ключевые интерфейсы геометрии и классы. Большинство этих интерфейсов и классов являются частью java.awt.geom пакет. Некоторые, как Shape, часть java.awt пакет, прежде всего чтобы поддержать обратную совместимость с более ранними версиями программного обеспечения JDK.

Интерфейс
Описание
PathIterator
Определяет методы для того, чтобы получить элементы от пути.
Shape
(java.awt)
Обеспечивает единый набор методов для описания и осмотра геометрических объектов пути. Реализованный GeneralPath и другие классы геометрии.

Класс
Описание
Arc2D
Arc2D.Double
Arc2D.Float
Расширяется: RectangularShape
Представляет дугу, определенную ограничительным прямоугольником, запустите угол, угловую степень, и тип закрытия. Реализованный, чтобы определить дуги в и двойной точности плавающей: Arc2D.Float и Arc2D.Double.
Area
Реализации: Shape, Cloneable
Представляет геометрию области, которая поддерживает логические операции.
CubicCurve2D
CubicCurve2D.Double
CubicCurve2D.Float
 
Реализации: Shape
Представляет кубический параметрический сегмент кривой в (w) координатном пространстве. Реализованный, чтобы определить кубические кривые в и двойной точности плавающей: CubicCurve2D.Float и CubicCurve2D.Double.
Dimension2D
Инкапсулирует размерность height и width. Абстрактный суперкласс для всех объектов, которые хранят 2-D размерность.
Ellipse2D
Ellipse2D.Double
Ellipse2D.Float
Расширяется: RectangularShape
Представляет эллипс, определенный ограничительным прямоугольником. Реализованный, чтобы определить эллипсы в и двойной точности плавающей: Ellipse2D.Float и Ellipse2D.Double.
FlatteningPathIterator
Возвращает сглаженное представление a PathIterator объект.
Может использоваться, чтобы обеспечить сглаживающееся поведение для Shapes это не выполняет вычисления интерполяции непосредственно.
GeneralPath
Реализации: Shape
Представляет геометрический путь, созданный из строк и квадратных и кубических кривых.
Line2D
Line2D.Double
Line2D.Float
Реализации: Shape
Представляет линейный сегмент в (x, y) координатное пространство. Реализованный, чтобы определить строки в и двойной точности плавающей: Line2D.Float и Line2D.Double.
Point2D
Point2D.Double
Point2D.Float
Точка, представляющая расположение в (x, y) координатное пространство. Реализованный, чтобы определить точки в и двойной точности плавающей: Point2D.Float и Point2D.Double.
QuadCurve2D
QuadCurve2D.Double
QuadCurve2D.Float
Реализации: Shape
Представляет квадратный параметрический сегмент кривой в (x, y) координатное пространство. Реализованный, чтобы определить квадратные кривые в и двойной точности плавающей: QuadCurve2D.Float и QuadCurve2D.Double.
Rectangle2D
Rectangle2D.Double
Rectangle2D.Float
Расширяется: RectangularShape
Представляет прямоугольник, определенный расположением (x, y) и размерность (w x h). Реализованный, чтобы определить прямоугольники в и двойной точности плавающей: Rectangle2D.Float и Rectangle2D.Double.
RectangularShape
Реализации: Shape
Обеспечивает общие подпрограммы манипулирования для того, чтобы они работали на формах, у которых есть прямоугольные границы.
RoundRectangle2D
RoundRectangle2D.Double
RoundRectangle2D.Float
Расширяется: RectangularShape
Представляет прямоугольник с закругленными углами, определенными расположением (x, y), размерность (w x h), и width и height угловой дуги. Реализованный, чтобы определить круглые прямоугольники в и двойной точности плавающей: RoundRectangle2D.Float и RoundRectangle2D.Double.

3.2 Понятия геометрии

A Shape экземпляр любого class, который реализует Shape интерфейс, такой как GeneralPath или Rectangle2D.Float. A Shape’s контур (схема) упоминается как ее путь.

Когда a Shape оттягивается, перьевой стиль, определенный Stroke объект в Graphics2D контексту применяются к Shape’s путь. Когда a Shape заполнено, Paint в Graphics2D контекст применяется к области в ее пути. Для получения дополнительной информации см. “Рендеринг с Graphics2D” на странице 15.

A Shape’s путь может также использоваться, чтобы определить траекторию отсечения. Траектория отсечения определяет то, чем пиксели представляются — только те пиксели, которые лежат в пределах области, определенной траекторией отсечения, представляются. Траектория отсечения является частью Graphics2D контекст. Для получения дополнительной информации см. “Установку Траектории отсечения” на странице 32.

A GeneralPath форма, которая может использоваться, чтобы представить любой двумерный объект, который может быть создан из строк и квадратных или кубических кривых. Для удобства, java.awt.geom обеспечивает дополнительные реализации Shape интерфейс, которые представляют общие геометрические объекты, такие как прямоугольники, эллипсы, дуги, и кривые. API Java2D™ также обеспечивает специальный тип формы, которая поддерживает конструктивную геометрию области.

3.2.1 Конструктивная Геометрия области

Конструктивная Геометрия области (CAG) является процессом создания новых геометрических объектов, выполняя логические операции на существующих объектах. В Java 2-D API, специальный тип Shape вызванный Area поддерживает логические операции. Можно создать Area от любого Shape.

Areas поддерживайте следующие Логические операции:

Эти операции иллюстрируются в  рисунке 3-1.

Графическая иллюстрация объединения, пересечения, вычитания и монопольных ИЛИ логических операций

Логические операции рисунка 3-1

3.2.2 Границы и Тестирование Хита

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

Shape интерфейс определяет два метода для того, чтобы получить ограничивающий прямоугольник формы, getBounds и getBounds2D. getBounds2D метод возвращает a Rectangle2D вместо a Rectangle, обеспечение описания более высокой точности ограничивающего прямоугольника формы.

Shape также обеспечивает методы для того, чтобы они определили действительно ли:

3.3 Объединение областей, чтобы Создать Новые Формы

Areas может использоваться, чтобы быстро создать комплекс Shapes от простых форм, таких как круги и квадраты. Создать новый комплекс Shape объединяясь Areas:

Например, CAG мог использоваться, чтобы создать грушу как показанный в Figure 3-2.

Следующий контекст описывает графику

Груша рисунка 3-2 создается из кругов

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

3.4 Создание Пользовательской Формы

Можно реализовать Shape интерфейс, чтобы создать class, который определяет новый тип формы. Не имеет значения, как Вы представляете форму внутренне, пока можно реализовать Shape методы интерфейса. Shape должен быть в состоянии генерировать путь, который определяет его контур.

Например, Вы могли создать простую реализацию Shape это представляет многоугольники как массивы точек. Как только многоугольник создается, к нему можно было передать draw, setClip, или любой другой метод, который ожидает a Shape возразите как параметр.

PolygonPath class должен реализовать Shape методы интерфейса:

 


Содержание | Предыдущий | Следующий

Oracle и/или его филиалы Авторское право © 1993, 2012, Oracle и/или его филиалы. Все права защищены.
Свяжитесь с Нами