Класс Path2D

Все реализованные интерфейсы:
Shape, Cloneable
Прямые известные подклассы:
Path2D.Double, Path2D.Float
public abstract class Path2D
extends Object
implements Shape, Cloneable

Класс Path2D предоставляет простую, но гибкую форму, представляющую произвольную геометрическую кривую. Он может полностью представить любую кривую, которая может быть итерирована интерфейсом PathIterator, включая все типы её сегментов и правила обхода, и он реализует все основные методы проверки попадания из интерфейса Shape.

Используйте Path2D.Float при работе с данными, которые могут быть представлены и использованы с плавающей точкой одинарной точности. Используйте Path2D.Double для данных, которые требуют точности или диапазона двойной точности.

Path2D предоставляет именно те средства, которые необходимы для базового построения и управления геометрической кривой и реализации вышеперечисленных интерфейсов с небольшим добавлением интерпретации. Если необходимо манипулировать внутренними частями замкнутых геометрических фигур, выходящих за рамки простой проверки попадания, то класс Area предоставляет дополнительные возможности, специально нацеленные на замкнутые фигуры. Хотя оба класса номинально реализуют интерфейс Shape, они различаются по назначению, и вместе они обеспечивают два полезных представления геометрической фигуры, где Path2D в основном работает с траекторией, образованной сегментами кривой, а Area больше занимается интерпретацией и манипулированием замкнутыми областями 2D геометрического пространства.

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

С:
1.6

Вложенные классы

Модификатор и тип Класс Описание
static class  Path2D.Double

Класс Double определяет геометрическую кривую с координатами, хранящимися в числах с плавающей точкой двойной точности.

static class  Path2D.Float

Класс Float определяет геометрическую кривую с координатами, хранящимися в числах с плавающей точкой одинарной точности.

Поля

Модификатор и тип Поле Описание
static int WIND_EVEN_ODD

Правило обхода «четное-нечетное» для определения внутренней части кривой.

static int WIND_NON_ZERO

Правило обхода «неравное нулю» для определения внутренней части кривой.

Методы

Модификатор и тип Метод Описание
abstract void append​(PathIterator pi, boolean connect)

Добавляет геометрию указанного объекта PathIterator к кривой, возможно, соединяя новую геометрию с существующими сегментами кривой прямой линией.

void append​(Shape s, boolean connect)

Добавляет геометрию указанного объекта Shape к кривой, возможно, соединяя новую геометрию с существующими сегментами кривой прямой линией.

abstract Object clone()

Создает новый объект того же класса, что и этот объект.

void closePath()

Закрывает текущую подкривую, нарисовав прямую линию обратно к координатам последнего moveTo.

boolean contains​(double x, double y)

Проверяет, находятся ли заданные координаты внутри границы Shape, как описано в определении попадания.

boolean contains​(double x, double y, double w, double h)

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

static boolean contains​(PathIterator pi, double x, double y)

Проверяет, находятся ли указанные координаты внутри замкнутой границы указанного PathIterator.

static boolean contains​(PathIterator pi, double x, double y, double w, double h)

Проверяет, полностью ли указанная прямоугольная область находится внутри замкнутой границы указанного PathIterator.

static boolean contains​(PathIterator pi, Point2D p)

Проверяет, находится ли указанная точка Point2D внутри замкнутой границы указанного PathIterator.

static boolean contains​(PathIterator pi, Rectangle2D r)

Проверяет, полностью ли указанный прямоугольник Rectangle2D находится внутри замкнутой границы указанного PathIterator.

boolean contains​(Point2D p)

Проверяет, находится ли указанная Point2D внутри границы Shape, как описано в определении попадания.

boolean contains​(Rectangle2D r)

Проверяет, полностью ли внутренняя часть Shape содержит указанную Rectangle2D.

Shape createTransformedShape​(AffineTransform at)

Возвращает новый Shape, представляющий преобразованную версию этого Path2D.

abstract void curveTo​(double x1, double y1, double x2, double y2, double x3, double y3)

Добавляет криволинейный сегмент, определенный тремя новыми точками, в кривую, нарисовав кривую Безье, которая пересекает текущие координаты и заданные координаты (x3,y3), используя указанные точки (x1,y1) и (x2,y2) в качестве контрольных точек Безье.

Rectangle getBounds()

Возвращает целочисленный прямоугольник Rectangle, который полностью охватывает Shape.

Point2D getCurrentPoint()

Возвращает координаты, добавленные в конец кривой как объект Point2D.

PathIterator getPathIterator​(AffineTransform at, double flatness)

Возвращает объект-итератор, который итерирует по границе Shape и предоставляет доступ к уплощенному представлению геометрии контура Shape.

int getWindingRule()

Возвращает правило обхода стиля заливки.

boolean intersects​(double x, double y, double w, double h)

Проверяет, пересекается ли внутренняя часть Shape с внутренней частью указанной прямоугольной области.

static boolean intersects​(PathIterator pi, double x, double y, double w, double h)

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

static boolean intersects​(PathIterator pi, Rectangle2D r)

Проверяет, пересекается ли внутренняя часть указанного PathIterator с внутренней частью указанного Rectangle2D.

boolean intersects​(Rectangle2D r)

Проверяет, пересекается ли внутренняя часть Shape с внутренней частью указанной Rectangle2D.

abstract void lineTo​(double x, double y)

Добавляет точку в кривую, нарисовав прямую линию от текущих координат до новых заданных координат, указанных в формате двойной точности.

abstract void moveTo​(double x, double y)

Перемещает в указанные координаты, заданные в формате двойной точности.

abstract void quadTo​(double x1, double y1, double x2, double y2)

Добавляет криволинейный сегмент, определенный двумя новыми точками, в кривую, нарисовав квадратичную кривую, которая пересекает текущие координаты и заданные координаты (x2,y2), используя указанную точку (x1,y1) в качестве квадратичной параметрической контрольной точки.

void reset()

Сбрасывает кривую в пустое состояние.

void setWindingRule​(int rule)

Устанавливает правило обхода для этой кривой на указанное значение.

abstract void transform​(AffineTransform at)

Преобразует геометрию этой кривой с помощью указанного AffineTransform.

abstract void trimToSize()

Урезает емкость экземпляра Path2D до его текущего размера.

Методы, объявленные в классе java.lang.Object

equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

Методы, объявленные в интерфейсе java.awt.Shape

getBounds2D, getPathIterator

Поля

WIND_EVEN_ODD

public static final int WIND_EVEN_ODD

Правило чередования чётности/нечётности для определения внутренней области пути.

С:
1.6
См. также:
PathIterator.WIND_EVEN_ODD, Значения константных полей

WIND_NON_ZERO

public static final int WIND_NON_ZERO

Правило ненулевого обхода для определения внутренней области пути.

С:
1.6
См. также:
PathIterator.WIND_NON_ZERO, Значения константных полей

Методы

moveTo

public abstract void moveTo(double x,
                            double y)

Добавляет точку в траекторию, перемещаясь к указанным координатам с двойной точностью.

Параметры:
x - указанная координата X
y - указанная координата Y
С момента:
1.6

lineTo

public abstract void lineTo(double x,
                            double y)

Добавляет точку в траекторию, проводя прямую линию от текущих координат к новым указанным координатам с двойной точностью.

Параметры:
x - указанная координата X
y - указанная координата Y
С момента:
1.6

quadTo

public abstract void quadTo(double x1,
                            double y1,
                            double x2,
                            double y2)

Добавляет кривую секцию, определяемую двумя новыми точками, в траекторию, рисуя квадратичную кривую, пересекающую как текущие координаты, так и указанные координаты (x2,y2), используя указанную точку (x1,y1) в качестве квадратичного параметрического контрольной точки. Все координаты заданы с двойной точностью.

Параметры:
x1 - координата X квадратичной контрольной точки
y1 - координата Y квадратичной контрольной точки
x2 - координата X конечной точки
y2 - координата Y конечной точки
С момента:
1.6

curveTo

public abstract void curveTo(double x1,
                             double y1,
                             double x2,
                             double y2,
                             double x3,
                             double y3)

Добавляет кривую секцию, определяемую тремя новыми точками, в траекторию, рисуя кривую Безье, которая пересекает как текущие координаты, так и указанные координаты (x3,y3), используя указанные точки (x1,y1) и (x2,y2) в качестве контрольных точек Безье. Все координаты заданы с двойной точностью.

Параметры:
x1 - координата X первой контрольной точки Безье
y1 - координата Y первой контрольной точки Безье
x2 - координата X второй контрольной точки Безье
y2 - координата Y второй контрольной точки Безье
x3 - координата X конечной точки
y3 - координата Y конечной точки
С момента:
1.6

closePath

public final void closePath()

Закрывает текущую подтраекторию, нарисовав прямую линию обратно к координатам последней moveTo. Если траектория уже закрыта, этот метод не оказывает влияния.

С момента:
1.6

append

public final void append(Shape s,
                         boolean connect)

Добавляет геометрию указанного Shape объекта в траекторию, возможно соединяя новую геометрию с существующими сегментами траектории с помощью отрезка прямой. Если параметр connect равен true и траектория не пуста, то любой начальный moveTo в геометрии добавленного Shape преобразуется в lineTo отрезок. Если координаты назначения такого соединительного lineTo отрезка совпадают с координатами конца текущей открытой подтраектории, то отрезок опускается как излишний. Правило обхода указанного Shape игнорируется, и добавленная геометрия управляется правилом обхода, заданным для этой траектории.

Параметры:
s - Shape, чья геометрия добавляется в эту траекторию
connect - логическое значение для управления преобразованием начального moveTo отрезка в lineTo отрезок для соединения новой геометрии с существующей траекторией
С момента:
1.6

append

public abstract void append(PathIterator pi,
                            boolean connect)

Добавляет геометрию указанного PathIterator объекта в траекторию, возможно соединяя новую геометрию с существующими сегментами траектории с помощью отрезка прямой. Если параметр connect равен true и траектория не пуста, то любой начальный moveTo в геометрии добавленного Shape преобразуется в lineTo отрезок. Если координаты назначения такого соединительного lineTo отрезка совпадают с координатами конца текущей открытой подтраектории, то отрезок опускается как излишний. Правило обхода указанного Shape игнорируется, и добавленная геометрия управляется правилом обхода, заданным для этой траектории.

Параметры:
pi - PathIterator, чья геометрия добавляется в эту траекторию
connect - логическое значение для управления преобразованием начального moveTo отрезка в lineTo отрезок для соединения новой геометрии с существующей траекторией
С момента:
1.6

getWindingRule

public final int getWindingRule()

Возвращает правило обхода стиля заливки.

Возвращает:
целое число, представляющее текущее правило обхода.
С момента:
1.6
См. также:
WIND_EVEN_ODD, WIND_NON_ZERO, setWindingRule(int)

setWindingRule

public final void setWindingRule(int rule)

Устанавливает правило обхода для этой траектории на указанное значение.

Параметры:
rule - целое число, представляющее указанное правило обхода
Исключения:
IllegalArgumentException - если rule не равно либо WIND_EVEN_ODD, либо WIND_NON_ZERO
С момента:
1.6
См. также:
getWindingRule()

getCurrentPoint

public final Point2D getCurrentPoint()

Возвращает координаты, недавно добавленные в конец траектории, как объект Point2D.

Возвращает:
объект Point2D, содержащий конечные координаты траектории, или null, если в траектории нет точек.
С момента:
1.6

reset

public final void reset()

Сбрасывает траекторию в пустое состояние. Позиция добавления возвращается в начало траектории, и все координаты и типы точек забываются.

С момента:
1.6

transform

public abstract void transform(AffineTransform at)

Преобразует геометрию этой траектории с использованием указанного AffineTransform. Геометрия преобразуется на месте, что приводит к постоянному изменению границ, определяемых этим объектом.

Параметры:
at - AffineTransform для преобразования области
С момента:
1.6

createTransformedShape

public final Shape createTransformedShape(AffineTransform at)

Возвращает новый Shape , представляющий преобразованную версию этого Path2D. Обратите внимание, что точный тип и точность координат возвращаемого значения для этого метода не определены. Метод вернет Shape, содержащий не меньше точности преобразованной геометрии, чем в настоящее время поддерживает этот Path2D, но он также может содержать не больше точности. Если компромисс между точностью и размером хранилища в результате важен, то следует использовать удобные конструкторы в подклассах Path2D.Float и Path2D.Double для явного выбора.

Параметры:
at - AffineTransform для преобразования нового Shape.
Возвращает:
новый Shape, преобразованный с помощью указанного AffineTransform.
С момента:
1.6

getBounds

public final Rectangle getBounds()

Возвращает целое число Rectangle, которое полностью охватывает Shape. Обратите внимание, что нет гарантии, что возвращаемый Rectangle является самой маленькой ограничивающей рамкой, которая охватывает Shape, только то, что Shape целиком находится внутри указанной Rectangle. Возвращаемый Rectangle также может не полностью охватить Shape если Shape переполняет ограниченный диапазон целочисленного типа данных. Метод getBounds2D обычно возвращает более тесную ограничивающую рамку благодаря большей гибкости в представлении.

Обратите внимание, что определение попадания внутрь может привести к ситуациям, когда точки на определяющей линии shape могут не считаться содержащимися в возвращаемом bounds объекте, но только в тех случаях, когда эти точки также не считаются содержащимися в исходном shape.

Если point находится внутри shape в соответствии с методом contains(point), то он должен находиться внутри возвращаемых Rectangle границ в соответствии с методом contains(point) объекта bounds. В частности:

shape.contains(x,y) требует bounds.contains(x,y)

Если point не находится внутри shape, то он все равно может находиться в пределах объекта bounds:

bounds.contains(x,y) не подразумевает shape.contains(x,y)

Определено в:
getBounds в интерфейсе Shape
Возвращает:
целое число Rectangle , которое полностью охватывает Shape.
С момента:
1.6
См. также:
Shape.getBounds2D()

contains

public static boolean contains(PathIterator pi,
                               double x,
                               double y)

Проверяет, находятся ли указанные координаты внутри замкнутой границы указанного PathIterator.

Этот метод предоставляет основную возможность для реализаторов интерфейса Shape для реализации поддержки метода Shape.contains(double, double).

Параметры:
pi - указанная PathIterator
x - указанная координата X
y - указанная координата Y
Возвращает:
true , если указанные координаты находятся внутри указанной PathIterator; false в противном случае
С:
1.6

contains

public static boolean contains(PathIterator pi,
                               Point2D p)

Проверяет, находится ли указанная Point2D внутри замкнутой границы указанного PathIterator.

Этот метод предоставляет базовые средства для разработчиков интерфейса Shape для реализации поддержки метода Shape.contains(Point2D).

Параметры:
pi - указанный PathIterator
p - указанный Point2D
Возвращает:
true , если указанные координаты находятся внутри указанной PathIterator; false в противном случае
С:
1.6

contains

public final boolean contains(double x,
                              double y)

Проверяет, находятся ли указанные координаты внутри границы Shape, как определено в определении внутриности.

Определено в:
contains в интерфейсе Shape
Параметры:
x - указанная координата X для проверки
y - указанная координата Y для проверки
Возвращает:
true , если указанные координаты находятся внутри границы Shape; false в противном случае.
С:
1.6

contains

public final boolean contains(Point2D p)

Проверяет, находится ли указанная Point2D внутри границы Shape, как определено в определении внутриности.

Определено в:
contains в интерфейсе Shape
Параметры:
p - указанный Point2D для проверки
Возвращает:
true , если указанный Point2D находится внутри границы Shape; false в противном случае.
С:
1.6

contains

public static boolean contains(PathIterator pi,
                               double x,
                               double y,
                               double w,
                               double h)

Проверяет, полностью ли указанный прямоугольный участок находится внутри замкнутой границы указанного PathIterator.

Этот метод предоставляет базовые средства для разработчиков интерфейса Shape для реализации поддержки метода Shape.contains(double, double, double, double).

Этот метод может консервативно возвращать false в тех случаях, когда указанный прямоугольный участок пересекает отрезок пути, но этот отрезок не представляет границу между внутренней и внешней областями пути. Такие отрезки могут полностью находиться внутри пути, если они являются частью пути с правилом обхода WIND_NON_ZERO, или если отрезки повторно прослеживаются в обратном направлении, так что две серии отрезков взаимно уничтожаются, не оставляя внешней области между ними. Чтобы определить, представляют ли отрезки настоящие границы внутренней области пути, потребовались бы обширные вычисления, включающие все отрезки пути и правило обхода, и поэтому выходят за рамки этой реализации.

Параметры:
pi - указанный PathIterator
x - указанная координата X
y - указанная координата Y
w - ширина указанного прямоугольного участка
h - высота указанного прямоугольного участка
Возвращает:
true , если указанный PathIterator содержит указанный прямоугольный участок; false в противном случае.
С:
1.6

contains

public static boolean contains(PathIterator pi,
                               Rectangle2D r)

Проверяет, полностью ли указанный Rectangle2D находится внутри замкнутой границы указанного PathIterator.

Этот метод предоставляет базовые средства для разработчиков интерфейса Shape для реализации поддержки метода Shape.contains(Rectangle2D).

Этот метод может консервативно возвращать false в тех случаях, когда указанный прямоугольный участок пересекает отрезок пути, но этот отрезок не представляет границу между внутренней и внешней областями пути. Такие отрезки могут полностью находиться внутри пути, если они являются частью пути с правилом обхода WIND_NON_ZERO, или если отрезки повторно прослеживаются в обратном направлении, так что две серии отрезков взаимно уничтожаются, не оставляя внешней области между ними. Чтобы определить, представляют ли отрезки настоящие границы внутренней области пути, потребовались бы обширные вычисления, включающие все отрезки пути и правило обхода, и поэтому выходят за рамки этой реализации.

Параметры:
pi - указанный PathIterator
r - указанный Rectangle2D
Возвращает:
true , если указанный PathIterator содержит указанный Rectangle2D; false в противном случае.
С:
1.6

contains

public final boolean contains(double x,
                              double y,
                              double w,
                              double h)

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

Метод Shape.contains() позволяет реализации Shape консервативно возвращать false когда:

  • метод intersect возвращает true и
  • вычисления для определения того, содержит ли Shape полностью прямоугольный участок, чрезмерно затратны.
Это означает, что для некоторых Shapes этот метод может вернуть false , даже если Shape содержит прямоугольный участок. Класс Area выполняет более точные геометрические вычисления, чем большинство объектов Shape и поэтому может быть использован, если требуется более точный ответ.

Этот метод может консервативно возвращать false в тех случаях, когда указанный прямоугольный участок пересекает отрезок пути, но этот отрезок не представляет границу между внутренней и внешней областями пути. Такие отрезки могут полностью находиться внутри пути, если они являются частью пути с правилом обхода WIND_NON_ZERO, или если отрезки повторно прослеживаются в обратном направлении, так что две серии отрезков взаимно уничтожаются, не оставляя внешней области между ними. Чтобы определить, представляют ли отрезки настоящие границы внутренней области пути, потребовались бы обширные вычисления, включающие все отрезки пути и правило обхода, и поэтому выходят за рамки этой реализации.

Определено в:
contains в интерфейсе Shape
Параметры:
x - координата X верхнего левого угла указанного прямоугольного участка
y - координата Y верхнего левого угла указанного прямоугольного участка
w - ширина указанного прямоугольного участка
h - высота указанного прямоугольного участка
Возвращает:
true , если внутренняя область Shape полностью содержит указанный прямоугольный участок; false в противном случае или если Shape содержит прямоугольный участок, и метод intersects возвращает true , и вычисления включения слишком затратны.
С:
1.6
См. также:
Area, Shape.intersects(double, double, double, double)

contains

public final boolean contains(Rectangle2D r)

Проверяет, полностью ли внутренняя область Shape содержит указанный Rectangle2D. Метод Shape.contains() позволяет реализации Shape консервативно возвращать false когда:

  • метод intersect возвращает true и
  • вычисления для определения того, содержит ли Shape полностью Rectangle2D, чрезмерно затратны.
Это означает, что для некоторых Shapes этот метод может вернуть false , даже если Shape содержит Rectangle2D. Класс Area выполняет более точные геометрические вычисления, чем большинство объектов Shape и поэтому может быть использован, если требуется более точный ответ.

Этот метод может консервативно возвращать false в тех случаях, когда указанный прямоугольный участок пересекает отрезок пути, но этот отрезок не представляет границу между внутренней и внешней областями пути. Такие отрезки могут полностью находиться внутри пути, если они являются частью пути с правилом обхода WIND_NON_ZERO, или если отрезки повторно прослеживаются в обратном направлении, так что две серии отрезков взаимно уничтожаются, не оставляя внешней области между ними. Чтобы определить, представляют ли отрезки настоящие границы внутренней области пути, потребовались бы обширные вычисления, включающие все отрезки пути и правило обхода, и поэтому выходят за рамки этой реализации.

Определено в:
contains в интерфейсе Shape
Параметры:
r - Указанный Rectangle2D
Возвращает:
true если внутренняя область Shape полностью содержит Rectangle2D; false в противном случае или если Shape содержит Rectangle2D и метод intersects возвращает true , и вычисления включения были бы слишком дорогостоящими.
С момента:
1.6
См. также:
Shape.contains(double, double, double, double)

intersects

public static boolean intersects(PathIterator pi,
                                 double x,
                                 double y,
                                 double w,
                                 double h)

Проверяет, пересекается ли внутренняя область указанного PathIterator с внутренней областью заданного набора прямоугольных координат.

Этот метод предоставляет базовые средства для разработчиков, реализующих интерфейс Shape, для реализации поддержки метода Shape.intersects(double, double, double, double).

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

Параметры:
pi - указанный PathIterator
x - заданная координата X
y - заданная координата Y
w - ширина заданного прямоугольника
h - высота заданного прямоугольника
Возвращает:
true если указанный PathIterator и внутренняя область указанного набора прямоугольных координат пересекаются; false в противном случае.
С момента:
1.6

intersects

public static boolean intersects(PathIterator pi,
                                 Rectangle2D r)

Проверяет, пересекается ли внутренняя область указанного PathIterator с внутренней областью указанного Rectangle2D.

Этот метод предоставляет базовые средства для разработчиков, реализующих интерфейс Shape, для реализации поддержки метода Shape.intersects(Rectangle2D).

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

Параметры:
pi - указанный PathIterator
r - указанный Rectangle2D
Возвращает:
true если указанный PathIterator и внутренняя область указанного Rectangle2D пересекаются; false в противном случае.
С момента:
1.6

intersects

public final boolean intersects(double x,
                                double y,
                                double w,
                                double h)

Проверяет, пересекается ли внутренняя область Shape с внутренней областью указанной прямоугольной области. Прямоугольная область считается пересекающей Shape , если любая точка содержится как во внутренней области Shape , так и в указанной прямоугольной области.

Метод Shape.intersects() позволяет реализации Shape консервативно возвращать true в случае:

  • высокой вероятности пересечения прямоугольной области и Shape, но
  • вычисления для точного определения этого пересечения являются чрезмерно дорогостоящими.
Это означает, что для некоторых Shapes этот метод может возвращать true , даже если прямоугольная область не пересекает Shape. Класс Area выполняет более точные вычисления геометрического пересечения, чем большинство объектов Shape , и поэтому может быть использован, если требуется более точный ответ.

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

Определено в:
intersects в интерфейсе Shape
Параметры:
x - координата X верхнего левого угла указанной прямоугольной области
y - координата Y верхнего левого угла указанной прямоугольной области
w - ширина указанной прямоугольной области
h - высота указанной прямоугольной области
Возвращает:
true если внутренняя область Shape и внутренняя область прямоугольной области пересекаются или оба с высокой вероятностью пересекаются, а вычисления пересечения слишком дорогостоящие; false в противном случае.
С момента:
1.6
См. также:
Area

intersects

public final boolean intersects(Rectangle2D r)

Проверяет, пересекается ли внутренняя область Shape с внутренней областью указанного Rectangle2D. Метод Shape.intersects() позволяет реализации Shape консервативно возвращать true при:

  • высокой вероятности пересечения Rectangle2D и Shape, но
  • вычисления для точного определения этого пересечения являются чрезмерно дорогостоящими.
Это означает, что для некоторых Shapes этот метод может возвращать true , даже если Rectangle2D не пересекает Shape. Класс Area выполняет более точные вычисления геометрического пересечения, чем большинство объектов Shape , и поэтому может быть использован, если требуется более точный ответ.

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

Определено в:
intersects в интерфейсе Shape
Параметры:
r - указанный Rectangle2D
Возвращает:
true если внутренняя область Shape и внутренняя область указанного Rectangle2D пересекаются или оба с высокой вероятностью пересекаются, а вычисления пересечения слишком дорогостоящие; false в противном случае.
С момента:
1.6
См. также:
Shape.intersects(double, double, double, double)

getPathIterator

public final PathIterator getPathIterator(AffineTransform at,
                                          double flatness)

Возвращает объект-итератор, который перебирает границу Shape и предоставляет доступ к уплощенному представлению геометрии контура Shape.

Итератор возвращает только типы точек SEG_MOVETO, SEG_LINETO и SEG_CLOSE.

Если указан необязательный AffineTransform, координаты, возвращаемые в итерации, преобразуются соответственно.

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

Каждый вызов этого метода возвращает новый объект PathIterator, который независимо перебирает геометрию объекта Shape от любых других объектов PathIterator , используемых одновременно.

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

Итератор для этого класса не является потокобезопасным, что означает, что этот класс Path2D не гарантирует, что изменения в геометрии объекта Path2D не повлияют на уже проходящие итерации этой геометрии.

Указано:
getPathIterator в интерфейсе Shape
Параметры:
at - необязательное AffineTransform, которое применяется к координатам по мере их возвращения в итерации, или null, если требуются не преобразованные координаты
flatness - максимальное расстояние, на которое отрезки прямых, используемые для аппроксимации криволинейных участков, могут отклоняться от любой точки исходной кривой
Возвращает:
новый PathIterator, который независимо обходит уплощенную просмотр геометрии Shape.
С:
1.6

clone

public abstract Object clone()

Создаёт новый объект того же класса, что и этот объект.

Переопределяет:
clone в классе Object
Возвращает:
клонированный экземпляр.
Выбрасывает:
OutOfMemoryError - если памяти недостаточно.
С:
1.6
См. также:
Cloneable

trimToSize

public abstract void trimToSize()

Уменьшает емкость экземпляра Path2D до его текущего размера. Приложение может использовать эту операцию для минимизации хранения пути.

С:
10

© 1993, 2020, Oracle and/or its affiliates. All rights reserved.
Documentation extracted from Debian's OpenJDK Development Kit package.
Licensed under the GNU General Public License, version 2, with the Classpath Exception.
Various third party code in OpenJDK is licensed under different licenses (see Debian package).
Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.
https://docs.oracle.com/en/java/javase/11/docs/api/java.desktop/java/awt/geom/Path2D.html

Spec-Zone .ru
спецификации, руководства, описания, API