java.lang.Object
java.awt.Polygon
- 所有已实现的接口:
Shape,Serializable
Polygon 类封装了坐标空间内封闭的二维区域的描述。该区域由任意数量的线段界定,每条线段都是多边形的一侧。在内部,多边形由 (x,y) 坐标对列表组成,其中每一对定义一个顶点的多边形,两个连续的对是一条线的端点,该线是多边形的一侧。第一对和最后一对 (x,y) 点由闭合多边形的线段连接。这个 Polygon 是用奇偶缠绕规则定义的。请参阅 WIND_EVEN_ODD 以了解奇偶缠绕规则的定义。此类的命中测试方法(包括 contains、intersects 和 inside 方法)使用内心Shape 类注解中描述的定义。
- 自从:
- 1.0
- 参见:
-
字段摘要
字段 -
构造方法总结
构造方法 -
方法总结
修饰符和类型方法描述voidaddPoint(int x, int y) 将指定的坐标附加到此Polygon。booleancontains(double x, double y) 测试指定坐标是否在Shape的边界内,如 definition of insideness 所述。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。
-
字段详细信息
-
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的界限。该值可以为空。- 自从:
- 1.0
- 参见:
-
-
构造方法详细信息
-
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对象重置为空多边形。坐标数组和其中的数据保持不变,但点数重置为零以将旧顶点数据标记为无效并在开始时开始累积新顶点数据。所有与旧顶点相关的内部缓存数据都将被丢弃。请注意,由于重新使用重置前的坐标数组,如果新多边形数据中的顶点数明显小于来自重置前。- 自从:
- 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
已弃用。从 JDK 1.1 版开始,由getBounds()取代。返回此Polygon的边界。- 返回:
-
这个
Polygon的界限。 - 自从:
- 1.0
-
contains
确定指定的Point是否在此Polygon内。- 参数:
p- 指定要测试的Point- 返回:
true如果Polygon包含Point;false否则。- 自从:
- 1.0
- 参见:
-
contains
public boolean contains(int x, int y) 确定指定坐标是否在此Polygon内。- 参数:
x- 指定要测试的X坐标y- 指定待测Y坐标- 返回:
true如果这个Polygon包含指定的坐标(x,y);false否则。- 自从:
- 1.1
- 参见:
-
inside
已弃用。从 JDK 1.1 版开始,由contains(int, int)取代。确定指定的坐标是否包含在此Polygon中。- 参数:
x- 指定要测试的X坐标y- 指定待测Y坐标- 返回:
true如果这个Polygon包含指定的坐标(x,y);false否则。- 自从:
- 1.0
- 参见:
-
getBounds2D
返回Shape比getBounds方法更高精度和更准确的边界框。请注意,不能保证返回的Rectangle2D是包围Shape的最小边界框,只能保证Shape完全位于指示的Rectangle2D内。此方法返回的边界框通常比getBounds方法返回的边界框更紧密,并且不会因溢出问题而失败,因为返回值可以是使用双精度值存储尺寸的Rectangle2D的实例。请注意,definition of insideness 可能导致
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的边界内,如 definition of insideness 所述。 -
contains
-
intersects
public boolean intersects(double x, double y, double w, double h) 测试Shape的内部是否与指定矩形区域的内部相交。如果Shape和指定矩形区域的内部都包含任何点,则认为矩形区域与Shape相交。Shape.intersects()方法允许Shape实现在以下情况下保守地返回true:- 矩形区域和
Shape相交的概率很高,但是 - 准确确定该交叉点的计算非常昂贵。
Shapes此方法可能返回true即使矩形区域不与Shape相交。Area类执行比大多数Shape对象更准确的几何交集计算,因此如果需要更精确的答案,可以使用。- 指定者:
intersects在接口Shape中- 参数:
x- 指定矩形区域左上角的X坐标y- 指定矩形区域左上角的Y坐标w- 指定矩形区域的宽度h- 指定矩形区域的高度- 返回:
true如果Shape的内部与矩形区域的内部相交,或者两者极有可能相交,并且相交计算的执行成本太高;false否则。- 自从:
- 1.2
- 参见:
- 矩形区域和
-
intersects
测试Shape的内部是否与指定的Rectangle2D的内部相交。Shape.intersects()方法允许Shape实现在以下情况下保守地返回true:Rectangle2D和Shape相交的可能性很高,但是- 准确确定该交叉点的计算非常昂贵。
Shapes此方法可能返回true即使Rectangle2D不与Shape相交。Area类执行比大多数Shape对象更准确的几何交集计算,因此如果需要更精确的答案,可以使用。- 指定者:
intersects在接口Shape中- 参数:
r- 指定的Rectangle2D- 返回:
true如果Shape的内部与指定的Rectangle2D的内部相交,或者两者极有可能相交,并且相交计算的执行成本太高;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此方法可能返回false即使Shape包含矩形区域。Area类执行比大多数Shape对象更准确的几何计算,因此可以在需要更精确的答案时使用。 -
contains
测试Shape的内部是否完全包含指定的Rectangle2D。Shape.contains()方法允许Shape实现在以下情况下保守地返回false:intersect方法返回true和- 确定
Shape是否完全包含Rectangle2D的计算非常昂贵。
Shapes此方法可能返回false即使Shape包含Rectangle2D。Area类执行比大多数Shape对象更准确的几何计算,因此可以在需要更精确的答案时使用。 -
getPathIterator
- 指定者:
getPathIterator在接口Shape中- 参数:
at- 一个可选的AffineTransform应用于在迭代中返回的坐标,或者null如果需要未转换的坐标- 返回:
-
一个
PathIterator对象,它提供对此Polygon的几何结构的访问。 - 自从:
- 1.2
-
getPathIterator
返回一个迭代器对象,它沿着Shape的边界迭代,并提供对Shape轮廓几何的访问。迭代器仅返回 SEG_MOVETO、SEG_LINETO 和 SEG_CLOSE 点类型。由于多边形已经是平面的,flatness参数将被忽略。可以指定一个可选的AffineTransform,在这种情况下,迭代中返回的坐标会相应地进行转换。- 指定者:
getPathIterator在接口Shape中- 参数:
at- 一个可选的AffineTransform应用于在迭代中返回的坐标,或者null如果需要未转换的坐标flatness- 在将细分曲线替换为连接端点的直线之前,给定曲线的控制点可以偏离共线的最大量。由于多边形已经是平坦的,因此flatness参数将被忽略。- 返回:
-
一个
PathIterator对象,它提供对Shape对象几何的访问。 - 自从:
- 1.2
-
getBounds()取代。