java.lang.Object
java.awt.Polygon
- 所有已实现的接口:
-
Shape
,Serializable
Polygon
类封装了在坐标空间内描述闭合的二维区域的信息。该区域由任意数量的线段限定,每个线段是多边形的一条边。在内部,多边形由一系列(x,y)
坐标对组成,其中每对定义多边形的一个顶点,并且两个连续的对是多边形一条边的端点。第一个和最后一个(x,y)
点对由一条线段连接,闭合多边形。此Polygon
使用奇偶规则定义。请参见WIND_EVEN_ODD
以获取奇偶规则的定义。此类的命中测试方法,包括contains
、intersects
和inside
方法,使用在Shape
类注释中描述的内部性定义。
- 自:
- 1.0
- 参见:
-
Field Summary
-
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescriptionvoid
addPoint
(int x, int y) 将指定坐标附加到此Polygon
。boolean
contains
(double x, double y) 测试指定坐标是否在Shape
的边界内,如内部性
的定义所述。boolean
contains
(double x, double y, double w, double h) 测试Shape
的内部是否完全包含指定的矩形区域。boolean
contains
(int x, int y) 确定指定坐标是否在此Polygon
内部。boolean
boolean
测试Shape
的内部是否完全包含指定的Rectangle2D
。boolean
确定指定的Point
是否在此Polygon
内部。已弃用。获取此Polygon
的边界框。返回Shape
的边界框比getBounds
方法更高精度和更准确。返回一个迭代器对象,该对象沿着此Polygon
的边界迭代,并提供对此Polygon
轮廓几何的访问。getPathIterator
(AffineTransform at, double flatness) 返回一个迭代器对象,该对象沿着Shape
的边界迭代,并提供对Shape
轮廓几何的访问。boolean
inside
(int x, int y) 已弃用。自JDK版本1.1起,已被contains(int, int)
替换。boolean
intersects
(double x, double y, double w, double h) 测试Shape
的内部是否与指定矩形区域的内部相交。boolean
测试Shape
的内部是否与指定Rectangle2D
的内部相交。void
使依赖于此Polygon
的顶点坐标的任何内部缓存数据无效或刷新。void
reset()
将此Polygon
对象重置为空多边形。void
translate
(int deltaX, int deltaY) 将Polygon
的顶点沿x轴移动deltaX
,沿y轴移动deltaY
。
-
Field Details
-
npoints
public int npoints- 自:
- 1.0
- 参见:
-
xpoints
public int[] xpointsX坐标数组。此数组中的元素数量可能多于此Polygon
中的X坐标数量。额外的元素允许向此Polygon
添加新点而无需重新创建此数组。npoints
的值等于此Polygon
中有效点的数量。- 自:
- 1.0
- 参见:
-
ypoints
public int[] ypointsY坐标数组。此数组中的元素数量可能多于此Polygon
中的Y坐标数量。额外的元素允许向此Polygon
添加新点而无需重新创建此数组。npoints
的值等于此Polygon
中有效点的数量。- 自:
- 1.0
- 参见:
-
bounds
此Polygon
的边界。此值可以为null。- 自:
- 1.0
- 参见:
-
-
Constructor Details
-
Polygon
public Polygon()创建一个空多边形。- 自:
- 1.0
-
Polygon
public Polygon(int[] xpoints, int[] ypoints, int npoints) 根据指定参数构造并初始化一个Polygon
。- 参数:
-
xpoints
- X坐标数组 -
ypoints
- Y坐标数组 -
npoints
-Polygon
中的总点数 - 抛出:
-
NegativeArraySizeException
- 如果npoints
的值为负数。 -
IndexOutOfBoundsException
- 如果npoints
大于xpoints
或ypoints
的长度。 -
NullPointerException
- 如果xpoints
或ypoints
为null
。 - 自:
- 1.0
-
-
Method Details
-
reset
public void reset()将此Polygon
对象重置为空多边形。坐标数组及其中的数据保持不变,但点数重置为零,以标记旧顶点数据无效,并从头开始累积新顶点数据。所有与旧顶点相关的内部缓存数据都将被丢弃。请注意,由于重用了重置前的坐标数组,如果新多边形数据中的顶点数量明显小于重置前数据中的顶点数量,则创建新的空Polygon
可能比重置当前对象更节省内存。- 自:
- 1.4
- 参见:
-
invalidate
public void invalidate()使依赖于此Polygon
的顶点坐标的任何内部缓存数据无效或刷新。在直接操作xpoints
或ypoints
数组的坐标后,应调用此方法,以避免getBounds
或contains
等方法产生不一致的结果,这些方法可能会缓存与早期计算有关的顶点坐标的数据。- 自:
- 1.4
- 参见:
-
translate
public void translate(int deltaX, int deltaY) 将Polygon
的顶点沿x轴移动deltaX
,沿y轴移动deltaY
。- 参数:
-
deltaX
- 沿X轴平移的量 -
deltaY
- 沿Y轴平移的量 - 自:
- 1.1
-
addPoint
public void addPoint(int x, int y) 将指定坐标附加到此Polygon
。如果已执行计算此
Polygon
边界框的操作,例如getBounds
或contains
,则此方法会更新边界框。- 参数:
-
x
- 指定的X坐标 -
y
- 指定的Y坐标 - 自:
- 1.0
- 参见:
-
getBounds
-
getBoundingBox
Deprecated.As of JDK version 1.1, replaced bygetBounds()
.返回此Polygon
的边界。- 返回:
-
此
Polygon
的边界。 - 自:
- 1.0
-
contains
确定指定的Point
是否在此Polygon
内部。- 参数:
-
p
- 要测试的指定Point
- 返回:
-
如果
Polygon
包含Point
,则返回true
;否则返回false
。 - 自:
- 1.0
- 参见:
-
contains
public boolean contains(int x, int y) 确定指定的坐标是否在此Polygon
内部。- 参数:
-
x
- 要测试的指定X坐标 -
y
- 要测试的指定Y坐标 - 返回:
-
如果此
Polygon
包含指定坐标(x,y)
,则返回true
;否则返回false
。 - 自:
- 1.1
- 参见:
-
inside
Deprecated.As of JDK version 1.1, replaced bycontains(int, int)
.确定指定的坐标是否包含在此Polygon
内部。- 参数:
-
x
- 要测试的指定X坐标 -
y
- 要测试的指定Y坐标 - 返回:
-
如果此
Polygon
包含指定坐标(x,y)
,则返回true
;否则返回false
。 - 自:
- 1.0
- 参见:
-
getBounds2D
返回Shape
的高精度和更准确的边界框,比getBounds
方法更精确。请注意,返回的Rectangle2D
不一定是包围Shape
的最小边界框,只是Shape
完全位于指示的Rectangle2D
内部。此方法返回的边界框通常比getBounds
方法返回的边界框更紧凑,并且不会因溢出问题而失败,因为返回值可以是使用双精度值存储尺寸的Rectangle2D
的实例。请注意,内部定义的定义可能导致这样的情况:在
shape
的定义轮廓上的点可能不被认为包含在返回的bounds
对象中,但只有在这些点也不被认为包含在原始shape
中的情况下才是如此。如果根据
contains(point)
方法,一个point
在shape
内部,那么根据bounds
的contains(point)
方法,它必须在返回的Rectangle2D
边界对象内部。具体来说:shape.contains(p)
要求bounds.contains(p)
如果一个
point
不在shape
内部,那么它可能仍然包含在bounds
对象中:bounds.contains(p)
不意味着shape.contains(p)
- 指定者:
-
getBounds2D
在接口Shape
- 返回:
-
一个
Rectangle2D
的实例,是Shape
的高精度边界框。 - 自:
- 1.2
- 参见:
-
contains
public boolean contains(double x, double y) 测试指定的坐标是否在Shape
的边界内,如def_insideness
的定义所述。 -
contains
-
intersects
public boolean intersects(double x, double y, double w, double h) 测试Shape
的内部是否与指定的矩形区域的内部相交。如果任何点同时包含在Shape
的内部和指定的矩形区域内部,则认为矩形区域与Shape
相交。Shape.intersects()
方法允许Shape
实现在以下情况下保守地返回true
:- 矩形区域和
Shape
有很高的概率相交,但 - 准确确定此交集的计算代价过高。
Shapes
,即使矩形区域与Shape
不相交,此方法可能返回true
。与大多数Shape
对象相比,Area
类执行更准确的几何相交计算,因此如果需要更精确的答案,则可以使用该类。- 指定者:
-
intersects
在接口Shape
- 参数:
-
x
- 指定矩形区域左上角的X坐标 -
y
- 指定矩形区域左上角的Y坐标 -
w
- 指定矩形区域的宽度 -
h
- 指定矩形区域的高度 - 返回:
-
如果
Shape
的内部和指定矩形区域的内部相交,或者两者高度可能相交且计算交集的代价过高,则返回true
;否则返回false
。 - 自:
- 1.2
- 参见:
- 矩形区域和
-
intersects
测试Shape
的内部是否与指定的Rectangle2D
的内部相交。Shape.intersects()
方法允许Shape
实现在以下情况下保守地返回true
:- 矩形区域和
Shape
有很高的概率相交,但 - 准确确定此交集的计算代价过高。
Shapes
,即使Rectangle2D
与Shape
不相交,此方法可能返回true
。与大多数Shape
对象相比,Area
类执行更准确的几何相交计算,因此如果需要更精确的答案,则可以使用该类。- 指定者:
-
intersects
在接口Shape
- 参数:
-
r
- 指定的Rectangle2D
- 返回:
-
如果
Shape
的内部和指定的Rectangle2D
的内部相交,或者两者高度可能相交且计算交集的代价过高,则返回true
;否则返回false
。 - 自:
- 1.2
- 参见:
- 矩形区域和
-
contains
public boolean contains(double x, double y, double w, double h) 测试Shape
的内部是否完全包含指定的矩形区域。所有位于矩形区域内部的坐标必须位于Shape
内部,整个矩形区域才被视为包含在Shape
内部。Shape.contains()
方法允许Shape
实现在以下情况下保守地返回false
:intersect
方法返回true
且- 确定
Shape
是否完全包含矩形区域的计算代价过高。
Shapes
,即使intersect
方法返回true
,此方法可能返回false
。与大多数Shape
对象相比,Area
类执行更准确的几何计算,因此如果需要更精确的答案,则可以使用该类。 -
contains
测试Shape
的内部是否完全包含指定的Rectangle2D
。当intersect
方法返回true
且计算确定Shape
是否完全包含Rectangle2D
的代价过高时,Shape.contains()
方法允许Shape
实现保守地返回false
。这意味着对于某些Shapes
,即使Shape
包含Rectangle2D
,该方法可能返回false
。与大多数Shape
对象相比,Area
类执行更精确的几何计算,因此如果需要更精确的答案,则可以使用该类。 -
getPathIterator
- 指定者:
-
getPathIterator
在接口Shape
中 - 参数:
-
at
- 一个可选的要应用于迭代中返回的坐标的AffineTransform
,如果希望使用未转换的坐标,则为null
- 返回值:
-
一个提供对此
Polygon
的几何信息的PathIterator
对象。 - 自版本:
- 1.2
-
getPathIterator
返回一个迭代器对象,该对象沿着Shape
的边界迭代,并提供对Shape
轮廓的几何信息的访问。迭代器仅返回SEG_MOVETO、SEG_LINETO和SEG_CLOSE点类型。由于多边形已经是平面的,因此忽略flatness
参数。可以指定一个可选的AffineTransform
,在这种情况下,迭代中返回的坐标将相应地进行转换。- 指定者:
-
getPathIterator
在接口Shape
中 - 参数:
-
at
- 一个可选的要应用于迭代中返回的坐标的AffineTransform
,如果希望使用未转换的坐标,则为null
-
flatness
- 给定曲线的控制点在共线之前可以变化的最大量,以便将一个细分曲线替换为连接端点的直线。由于多边形已经是平面的,因此忽略flatness
参数。 - 返回值:
-
一个提供对
Shape
对象几何信息的PathIterator
对象。 - 自版本:
- 1.2
-
getBounds()
替换。