- java.lang.Object
-
- java.awt.Polygon
-
- 实现的所有接口
-
Shape
,Serializable
public class Polygon extends Object implements Shape, Serializable
Polygon
类封装了坐标空间内封闭的二维区域的描述。 该区域由任意数量的线段限定,每个线段都是多边形的一侧。 在内部,多边形包括(x,y)
坐标对的列表,其中每对坐标定义多边形的顶点 ,并且两个连续的对是作为多边形一侧的线的端点。 第一对和最后一对(x,y)
点由关闭多边形的线段连接。Polygon
定义为偶数奇数绕组规则。 有关奇偶绕组规则的定义,请参见WIND_EVEN_ODD
。 这个类的命中测试方法,其中包括contains
,intersects
和inside
方法,用在描述的内部性定义Shape
类评论。- 从以下版本开始:
- 1.0
- 另请参见:
-
Shape
, Serialized Form
-
-
方法摘要
所有方法 实例方法 具体的方法 弃用的方法 变量和类型 方法 描述 void
addPoint(int x, int y)
将指定的坐标追加到此Polygon
。boolean
contains(double x, double y)
测试指定的坐标是否在Shape
的边界内,如 definition of insideness所述 。boolean
contains(double x, double y, double w, double h)
测试Shape
的内部Shape
完全包含指定的矩形区域。boolean
contains(int x, int y)
确定指定的坐标是否在此Polygon
。boolean
contains(Point2D p)
测试指定Point2D
是的边界内Shape
,如所描述的definition of insideness 。boolean
contains(Rectangle2D r)
测试Shape
的内部Shape
完全包含指定的Rectangle2D
。boolean
contains(Point p)
确定指定的Point
是否在此Polygon
。Rectangle
getBoundingBox()
已过时。截至JDK 1.1版,由getBounds()
取代。Rectangle
getBounds()
获取此Polygon
的边界框。Rectangle2D
getBounds2D()
返回Shape
高精度和更精确的边界框,而不是getBounds
方法。PathIterator
getPathIterator(AffineTransform at)
返回迭代器对象,该对象沿Polygon
的边界进行迭代,并提供对此Polygon
轮廓几何的访问。PathIterator
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
intersects(Rectangle2D r)
测试Shape
的内部是否与指定的Rectangle2D
的内部相交。void
invalidate()
无效或刷新依赖于此Polygon
的顶点坐标的任何内部缓存数据。void
reset()
将此Polygon
对象重置为空多边形。void
translate(int deltaX, int deltaY)
平移的顶点Polygon
通过deltaX
沿x轴和由deltaY
沿y轴。
-
-
-
字段详细信息
-
npoints
public int npoints
- 从以下版本开始:
- 1.0
- 另请参见:
-
addPoint(int, int)
-
xpoints
public int[] xpoints
X坐标数组。 此数组中的元素数可能大于此Polygon
的X坐标Polygon
。 额外的元素允许将新点添加到此Polygon
而无需重新创建此数组。 值npoints
等于有效点的这个数量Polygon
。- 从以下版本开始:
- 1.0
- 另请参见:
-
addPoint(int, int)
-
ypoints
public int[] ypoints
Y坐标数组。 此数组中的元素数可能多于此Polygon
的Y坐标Polygon
。 额外的元素允许将新点添加到此Polygon
而无需重新创建此数组。 值npoints
等于有效点的这个数量Polygon
。- 从以下版本开始:
- 1.0
- 另请参见:
-
addPoint(int, int)
-
bounds
protected Rectangle bounds
这个Polygon
的界限。 该值可以为null。- 从以下版本开始:
- 1.0
- 另请参见:
-
getBoundingBox()
,getBounds()
-
-
构造方法详细信息
-
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
-
-
方法详细信息
-
reset
public void reset()
将此Polygon
对象重置为空多边形。 坐标数组及其中的数据保持不变,但点数被重置为零,以将旧的顶点数据标记为无效,并开始在开始时累积新的顶点数据。 与旧顶点相关的所有内部缓存数据都将被丢弃。 请注意,由于重置之前的坐标数组被重用,因此如果新多边形数据中的顶点数明显小于数据中的顶点数,则创建新的空Polygon
可能比重置当前的坐标数更高。在重置之前。- 从以下版本开始:
- 1.4
- 另请参见:
-
invalidate()
-
invalidate
public void invalidate()
无效或刷新依赖于此Polygon
的顶点坐标的任何内部缓存数据。 在对xpoints
或ypoints
数组中的坐标进行任何直接操作之后,应调用此方法,以避免getBounds
或contains
等方法的结果不一致,这些方法可能会缓存与顶点坐标相关的早期计算中的数据。- 从以下版本开始:
- 1.4
- 另请参见:
-
getBounds()
-
translate
public void translate(int deltaX, int deltaY)
平移的顶点Polygon
通过deltaX
沿x轴和由deltaY
沿y轴。- 参数
-
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()
,contains(java.awt.Point)
-
getBounds
public Rectangle getBounds()
获取此Polygon
的边界框。 边界框是最小的Rectangle
,其边与坐标空间的x和y轴平行,并且可以完全包含Polygon
。- Specified by:
-
getBounds
在接口Shape
- 结果
-
Rectangle
,定义了此Polygon
的范围。 - 从以下版本开始:
- 1.1
- 另请参见:
-
Shape.getBounds2D()
-
getBoundingBox
@Deprecated public Rectangle getBoundingBox()
Deprecated.As of JDK version 1.1, replaced bygetBounds()
.返回此Polygon
的边界。- 结果
-
这个
Polygon
的界限。 - 从以下版本开始:
- 1.0
-
contains
public boolean contains(Point p)
确定指定的Point
是否在此Polygon
。- 参数
-
p
- 要测试的指定Point
- 结果
-
true
如果Polygon
包含Point
; 否则,请false
。 - 从以下版本开始:
- 1.0
- 另请参见:
-
contains(double, double)
-
contains
public boolean contains(int x, int y)
确定指定的坐标是否在此Polygon
。- 参数
-
x
- 要测试的指定X坐标 -
y
- 要测试的指定Y坐标 - 结果
-
true
如果此Polygon
包含指定的坐标(x,y)
; 否则为false
。 - 从以下版本开始:
- 1.1
- 另请参见:
-
contains(double, double)
-
inside
@Deprecated public boolean inside(int x, int y)
Deprecated.As of JDK version 1.1, replaced bycontains(int, int)
.确定此Polygon
是否包含指定的坐标。- 参数
-
x
- 要测试的指定X坐标 -
y
- 要测试的指定Y坐标 - 结果
-
true
如果此Polygon
包含指定的坐标(x,y)
; 否则,请false
。 - 从以下版本开始:
- 1.0
- 另请参见:
-
contains(double, double)
-
getBounds2D
public Rectangle2D getBounds2D()
返回Shape
高精度和更精确的边界框,而不是getBounds
方法。 请注意,不保证返回的Rectangle2D
是最小的边框包围Shape
,只表示Shape
完全在指定的范围内Rectangle2D
。 此方法返回的边界框通常比getBounds
方法返回的边界框更紧密,并且由于溢出问题而永远不会失败,因为返回值可以是使用双精度值来存储尺寸的Rectangle2D
的实例。请注意, definition of insideness可能会导致shape定义轮廓上的
shape
可能不被视为包含在返回的bounds
对象中,但仅限于原始shape
不包含这些点的情况。如果
point
是内部shape
根据contains(point)
方法,那么它必须是内部返回Rectangle2D
界限根据对象contains(point)
所述的方法bounds
。 特别:shape.contains(p)
需要bounds.contains(p)
如果
point
不在shape
,则它可能仍包含在bounds
对象中:bounds.contains(p)
并不shape.contains(p)
- Specified by:
-
getBounds2D
在界面Shape
- 结果
-
的实例
Rectangle2D
那是一个高精度边界框Shape
。 - 从以下版本开始:
- 1.2
- 另请参见:
-
Shape.getBounds()
-
contains
public boolean contains(double x, double y)
测试指定的坐标是否在Shape
的边界内,如 definition of insideness所述 。
-
contains
public boolean contains(Point2D p)
测试指定Point2D
是的边界内Shape
,如所描述的definition of insideness 。
-
intersects
public boolean intersects(double x, double y, double w, double h)
测试Shape
的内部是否与指定矩形区域的内部相交。 矩形区域被认为是交叉的Shape
如果任何点被包含在双方的内部Shape
和指定的矩形区域。Shape.intersects()
方法允许Shape
实现在Shape
情况下保守地返回true
:- 矩形区域与
Shape
交叉的概率很高,但是 - 精确确定这个交叉点的计算非常昂贵。
Shapes
这种方法也可能返回true
即使矩形区域没有相交Shape
。Area
类比大多数Shape
对象执行更精确的几何交集计算,因此如果需要更精确的答案,则可以使用它。- Specified by:
-
intersects
在界面Shape
- 参数
-
x
- 指定矩形区域左上角的X坐标 -
y
- 指定矩形区域左上角的Y坐标 -
w
- 指定矩形区域的宽度 -
h
- 指定矩形区域的高度 - 结果
-
true
如果Shape
的内部与矩形区域的内部相交,或者两者都很可能相交,并且交叉计算将太昂贵而无法执行; 否则为false
。 - 从以下版本开始:
- 1.2
- 另请参见:
-
Area
- 矩形区域与
-
intersects
public boolean intersects(Rectangle2D r)
测试Shape
的内部是否与指定的Rectangle2D
的内部相交。Shape.intersects()
方法允许Shape
实现在Shape
情况下保守地返回true
:-
Rectangle2D
和Shape
相交的概率很高,但是 - 精确确定这个交叉点的计算非常昂贵。
Shapes
这种方法也可能返回true
即使Rectangle2D
不相交Shape
。Area
类比大多数Shape
对象执行更精确的几何交集计算,因此如果需要更精确的答案,则可以使用它。- Specified by:
-
intersects
在界面Shape
- 参数
-
r
- 指定的Rectangle2D
- 结果
-
true
如果Shape
的内部与指定的Rectangle2D
的内部相交,或者两者都很可能相交并且交叉计算的成本太高而无法执行; 否则为false
。 - 从以下版本开始:
- 1.2
- 另请参见:
-
Shape.intersects(double, double, double, double)
-
-
contains
public boolean contains(double x, double y, double w, double h)
测试Shape
的内部Shape
完全包含指定的矩形区域。 摆在矩形区域内必须将内在于所有的坐标Shape
整个矩形区域被认为包含内Shape
。Shape.contains()
方法允许Shape
实现在Shape
情况下保守地返回false
:-
intersect
方法返回true
和 - 用于确定
Shape
是否完全包含矩形区域的计算非常昂贵。
Shapes
即使Shape
包含矩形区域,此方法也可能返回false
。Area
类比大多数Shape
对象执行更精确的几何计算,因此如果需要更精确的答案,则可以使用它。- Specified by:
-
contains
在界面Shape
- 参数
-
x
- 指定矩形区域左上角的X坐标 -
y
- 指定矩形区域左上角的Y坐标 -
w
- 指定矩形区域的宽度 -
h
- 指定矩形区域的高度 - 结果
-
true
如果内部Shape
完全包含指定矩形区域;false
否则或者,如果Shape
包含矩形区域并且intersects
方法返回true
并且包含计算将太昂贵而无法执行。 - 从以下版本开始:
- 1.2
- 另请参见:
-
Area
,Shape.intersects(double, double, double, double)
-
-
contains
public boolean contains(Rectangle2D r)
测试Shape
的内部Shape
完全包含指定的Rectangle2D
。Shape.contains()
方法允许Shape
实施保守地返回false
时:-
intersect
方法返回true
和 - 用于确定
Shape
是否完全包含Rectangle2D
的计算非常昂贵。
Shapes
这种方法也可能返回false
即使Shape
包含Rectangle2D
。Area
类比大多数Shape
对象执行更精确的几何计算,因此如果需要更精确的答案,则可以使用它。- Specified by:
-
contains
接口Shape
- 参数
-
r
- 指定的Rectangle2D
- 结果
-
true
如果内部Shape
完全包含Rectangle2D
;false
否则或者,如果Shape
包含Rectangle2D
并且intersects
方法返回true
并且包含计算将太昂贵而无法执行。 - 从以下版本开始:
- 1.2
- 另请参见:
-
Shape.contains(double, double, double, double)
-
-
getPathIterator
public PathIterator getPathIterator(AffineTransform at)
返回迭代器对象,沿着这条边界迭代Polygon
,并提供上网本的轮廓的几何Polygon
。 可以指定可选的AffineTransform
,以便相应地转换迭代中返回的坐标。- Specified by:
-
getPathIterator
接口Shape
- 参数
-
at
- 可选的AffineTransform
应用于迭代中返回的坐标,如果需要未转换的坐标则null
- 结果
-
PathIterator
对象,用于访问此Polygon
的几何图形。 - 从以下版本开始:
- 1.2
-
getPathIterator
public PathIterator getPathIterator(AffineTransform at, double flatness)
返回迭代器对象,该对象沿Shape
的边界进行迭代,并提供对Shape
轮廓几何的访问。 迭代器仅返回SEG_MOVETO,SEG_LINETO和SEG_CLOSE点类型。 由于多边形已经是平坦的,因此将忽略flatness
参数。 可以指定可选的AffineTransform
在这种情况下,迭代中返回的坐标会相应地进行转换。- Specified by:
-
getPathIterator
in interfaceShape
- 参数
-
at
- 可选的AffineTransform
应用于迭代中返回的坐标,如果需要未转换的坐标则null
-
flatness
- 在将细分曲线替换为连接端点的直线之前,给定曲线的控制点可以flatness
线的变化的最大量。 由于多边形已经是平坦的,flatness
忽略flatness
参数。 - 结果
-
PathIterator
对象,用于访问Shape
对象的几何体。 - 从以下版本开始:
- 1.2
-
-