Spec-Zone.ru › OpenJDK 8

Класс Path2D

  • java.lang.Object
    • java.awt.geom.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.

Методы, унаследованные от класса 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

© 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.

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API