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
Fields -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionvoidaddPoint(int x, int y) 将指定坐标附加到此Polygon。booleancontains(double x, double y) 测试指定坐标是否在Shape的边界内,如内部性的定义所述。booleancontains(double x, double y, double w, double h) 测试Shape的内部是否完全包含指定的矩形区域。booleancontains(int x, int y) 确定指定坐标是否在此Polygon内部。booleanboolean测试Shape的内部是否完全包含指定的Rectangle2D。boolean确定指定的Point是否在此Polygon内部。已弃用。获取此Polygon的边界框。返回Shape的边界框比getBounds方法更高精度和更准确。返回一个迭代器对象,该对象沿着此Polygon的边界迭代,并提供对此Polygon轮廓几何的访问。getPathIterator(AffineTransform at, double flatness) 返回一个迭代器对象,该对象沿着Shape的边界迭代,并提供对Shape轮廓几何的访问。booleaninside(int x, int y) 已弃用。自JDK版本1.1起,已被contains(int, int)替换。booleanintersects(double x, double y, double w, double h) 测试Shape的内部是否与指定矩形区域的内部相交。boolean测试Shape的内部是否与指定Rectangle2D的内部相交。void使依赖于此Polygon的顶点坐标的任何内部缓存数据无效或刷新。voidreset()将此Polygon对象重置为空多边形。voidtranslate(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()替换。