JavaTM Platform
Standard Ed. 6

java.awt
类 Polygon

java.lang.Object
  继承者 java.awt.Polygon
所有已实现的接口:
Shape, Serializable

public class Polygon
     
extends Object
implements Shape, Serializable

Polygon 类封装了坐标空间中封闭的二维区域的描述。此区域以任意条线段为边界,每条线段都是多边形的一条边。在内部,一个多边形包含一列 (x,y) 坐标对,其中每个坐标对(coordinate pair)定义多边形的一个顶点,且两个连续的坐标对是多边形一条边的端点。第一个和最后一个 (x,y) 坐标对通过一条线段相连,形成一个封闭的多边形。此 Polygon 是按奇-偶性旋绕规则来定义的。有关奇-偶性旋绕规则的定义,请参见 WIND_EVEN_ODD。此类的目标测试方法使用 Shape 类注释中描述的 insideness 定义,目标测试方法包括 containsintersectsinside 方法。

从以下版本开始:
1.0
另请参见:
Shape, 序列化表格

字段摘要
protected  Rectangle bounds
          此 Polygon 的边界。
 int npoints
          点的总数。
 int[] xpoints
          X 坐标的数组。
 int[] ypoints
          Y 坐标的数组。
 
构造方法摘要
Polygon()
          创建空的多边形。
Polygon(int[] xpoints, int[] ypoints, int npoints)
          根据指定的参数构造并初始化新的 Polygon
 
方法摘要
 void 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 contains(Point p)
          确定指定的 Point 是否位于此 Polygon 的内部。
 boolean contains(Point2D p)
          测试指定的 Point2D 是否在 Shape 的边界内。
 boolean contains(Rectangle2D r)
          测试 Shape 内部是否完全包含指定的 Rectangle2D
 Rectangle getBoundingBox()
          已过时。 从 JDK version 1.1 开始,由 getBounds() 取代。
 Rectangle getBounds()
          获取此 Polygon 的边界框。
 Rectangle2D getBounds2D()
          返回一个高精度的、比 getBounds 方法更准确的 Shape 边界框。
 PathIterator getPathIterator(AffineTransform at)
          返回迭代器对象,此对象沿此 Polygon 的边界进行迭代,并且提供对此 Polygon 轮廓的几何形状的访问。
 PathIterator getPathIterator(AffineTransform at, double flatness)
          返回迭代器对象,此对象沿 Shape 的边界进行迭代,并且提供了对 Shape 轮廓的几何形状的访问。
 boolean inside(int x, int y)
          已过时。 从 JDK version 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 的顶点进行平移,沿 x 轴移动 deltaX,沿 y 移动 deltaY
 
从类 java.lang.Object 继承的方法
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

字段详细信息

npoints

public int npoints
点的总数。 npoints 的值表示在此 Polygon 中有效的点的数量,该值可以小于 xpointsypoints 中元素的个数。此值可以为 NULL。

从以下版本开始:
1.0
另请参见:
addPoint(int, int)

xpoints

public int[] xpoints
X 坐标的数组。此数组中元素的个数可以大于此 Polygon 中 X 坐标的个数。额外的元素允许新的点添加到此 Polygon 中,而无需重新创建此数组。 npoints 的值等于此 Polygon 中有效点的个数。

从以下版本开始:
1.0
另请参见:
addPoint(int, int)

ypoints

public int[] ypoints
Y 坐标的数组。此数组中元素的个数可以大于此 Polygon 中 Y 坐标的个数。额外的元素允许新的点添加到 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 大于 xpointsypoints 的长度。
NullPointerException - 如果 xpointsypointsnull
从以下版本开始:
1.0
方法详细信息

reset

public void reset()
将此 Polygon 对象重置为一个空多边形。坐标数组及其中的数据不发生改变,但点的个数被重置为零,以便将旧的顶点数据标记为无效,并且开始从头累积新的顶点数据。与旧顶点相关的所有内部缓冲的数据都将被丢弃。注意,由于重用了重置之前的坐标数组,因此在将创建一个新的空 Polygon 与重置当前多边形相比时,如果新多边形数据的顶点数远远少于重置之前的数据的顶点数,则重新创建将会提高内存的效率。

从以下版本开始:
1.4
另请参见:
invalidate()

invalidate

public void invalidate()
所有内部缓冲数据的失效或刷新都依赖于此 Polygon 的顶点坐标。此方法应该在完成对 xpointsypoints 数组中坐标的直接操作之后被调用,以避免产生与 getBoundscontains 这样的方法不一致的结果,后者这些方法可能从与顶点坐标相关联的更早的计算中缓冲数据。

从以下版本开始:
1.4
另请参见:
getBounds()

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 的边界框的操作,例如 getBoundscontains,则此方法将更新边界框。

参数:
x - 指定的 X 坐标
y - 指定的 Y 坐标
从以下版本开始:
1.0
另请参见:
getBounds(), contains(java.awt.Point)

getBounds

public Rectangle getBounds()
获取此 Polygon 的边界框。边界框是最小的 Rectangle,其边平行于坐标空间的 x 轴和 y 轴,且能够完全包含 Polygon

指定者:
接口 Shape 中的 getBounds
返回:
返回定义此 Polygon 边界的 Rectangle
从以下版本开始:
1.1
另请参见:
Shape.getBounds2D()

getBoundingBox

@Deprecated
public Rectangle getBoundingBox()
已过时。  从 JDK version 1.1 开始,由 getBounds() 取代。

返回此 Polygon 的边界。

返回:
返回此 Polygon 的边界。
从以下版本开始:
1.0

contains

public boolean contains(Point p)
确定指定的 Point 是否位于此 Polygon 的内部。

参数:
p - 要测试的指定的 Point
返回:
如果 Polygon 包含 Point,则返回 true;否则返回 false
从以下版本开始:
1.0
另请参见:
contains(double, double)

contains

public boolean contains(int x,
                        int y)
确定指定的坐标是否位于此 Polygon 的内部。

参数:
x - 要测试的指定的 X 坐标
y - 要测试的指定的 Y 坐标
返回:
如果此 Polygon 包含指定的坐标 (x,y),则返回 true;否则返回 false
从以下版本开始:
1.1
另请参见:
contains(double, double)

inside

@Deprecated
public boolean inside(int x,
                                 int y)
已过时。  从 JDK version 1.1 开始, 此函数为 contains(int, int)

确定此 Polygon 是否包含指定的坐标。

参数:
x - 要测试的指定的 X 坐标
y - 要测试的指定的 Y 坐标
返回:
如果此 Polygon 包含指定的坐标 (x,y),则返回 true;否则返回 false
从以下版本开始:
1.0
另请参见:
contains(double, double)

getBounds2D

public Rectangle2D getBounds2D()
返回一个高精度的、比 getBounds 方法更准确的 Shape 边界框。注意,不保证返回的 Rectangle2D 是包围 Shape 的最小边界框,只保证 Shape 完全位于指示的 Rectangle2D 中。此方法返回的边界框通常比 getBounds 方法返回的更紧密,而且永远不会因为溢出问题而出错,因为返回值可以是一个使用双精度值存储尺寸的 Rectangle2D 实例。

指定者:
接口 Shape 中的 getBounds2D
返回:
一个 Rectangle2D 实例,它是 Shape 的高精度边界框。
从以下版本开始:
1.2
另请参见:
Shape.getBounds()

contains

public boolean contains(double x,
                        double y)
测试指定坐标是否在 Shape 的边界内。

指定者:
接口 Shape 中的 contains
参数:
x - 要测试的指定的 X 坐标
y - 要测试的指定的 Y 坐标
返回:
如果指定坐标在 Shape 边界内,则返回 true;否则返回 false
从以下版本开始:
1.2

contains

public boolean contains(Point2D p)
测试指定的 Point2D 是否在 Shape 的边界内。

指定者:
接口 Shape 中的 contains
参数:
p - 要测试的指定的 Point2D
返回:
如果指定的 Point2DShape 边界内,则返回 true;否则返回 false
从以下版本开始:
1.2

intersects

public boolean intersects(double x,
                          double y,
                          double w,
                          double h)
测试 Shape 内部是否与指定矩形区域的内部相交。如果任何一个点既包含在 Shape 内,又包含在指定矩形区域内,则认为矩形区域与 Shape 相交。

在下列情况下,Shape.intersects() 方法允许 Shape 实现谨慎地返回 true

这意味着对于某些 Shape,即使矩形区域没有与该 Shape 相交,此方法也可能返回 true。如果需要更精确的答案,由于 Area 类比大多数 Shape 对象更为准确地计算几何相交,因此可以使用该类。

指定者:
接口 Shape 中的 intersects
参数:
x - 指定矩形区域左上角的 X 坐标
y - 指定矩形区域左上角的 Y 坐标
w - 指定矩形区域的宽度
h - 指定矩形区域的高度
返回:
如果 Shape 的内部区域与矩形的内部区域相交,或者相交的可能性很大且执行计算的代价太高,则返回 true;否则返回 false
从以下版本开始:
1.2
另请参见:
Area

intersects

public boolean intersects(Rectangle2D r)
测试 Shape 内部是否与指定 Rectangle2D 内部相交。在下列情况下, Shape.intersects() 方法允许 Shape 实现谨慎地返回 true 这意味着对于某些 Shape,即使 Rectangle2D 没有与该 Shape 相交,此方法也可能返回 true。如果需要更精确的答案,由于 Area 类比大多数 Shape 对象更为准确地计算几何相交,因此可以使用该类。

指定者:
接口 Shape 中的 intersects
参数:
r - 指定的 Rectangle2D
返回:
如果 Shape 内部与指定 Rectangle2D 内部相交,或者相交的可能性很大且执行计算的代价太高,则返回 true;否则返回 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.contains() 方法允许 Shape 实现谨慎地返回 false

这意味着对于某些 Shape,即使 Shape 包含矩形区域,此方法也可能返回 false。如果需要更精确的答案,由于 Area 类比大多数 Shape 对象更为准确地执行几何计算,因此可以使用该类。

指定者:
接口 Shape 中的 contains
参数:
x - 指定矩形区域左上角的 X 坐标
y - 指定矩形区域左上角的 Y 坐标
w - 指定矩形区域的宽度
h - 指定矩形区域的高度
返回:
如果 Shape 内部完全包含指定矩形区域,则返回 true;否则,如果 Shape 包含矩形区域、 intersects 方法返回 true 且执行包含计算代价太高,则返回 false
从以下版本开始:
1.2
另请参见:
Area, Shape.intersects(double, double, double, double)

contains

public boolean contains(Rectangle2D r)
测试 Shape 内部是否完全包含指定的 Rectangle2D。在下列情况下, Shape.contains() 方法允许 Shape 实现谨慎地返回 false 这意味着对于某些 Shape,即使 Shape 包含 Rectangle2D,此方法也可能返回 false。如果需要更精确的答案,由于 Area 类比大多数 Shape 对象更为准确地执行几何计算,因此可以使用该类。

指定者:
接口 Shape 中的 contains
参数:
r - 指定的 Rectangle2D
返回:
如果 Shape 内部完全包含 Rectangle2D,则返回 true;否则,如果 Shape 包含 Rectangle2Dintersects 方法返回 true 且执行包含计算代价太高,则返回 false
从以下版本开始:
1.2
另请参见:
Shape.contains(double, double, double, double)

getPathIterator

public PathIterator getPathIterator(AffineTransform at)
返回迭代器对象,此对象沿此 Polygon 的边界进行迭代,并且提供对此 Polygon 轮廓的几何形状的访问。可以指定一个可选的 AffineTransform,以便对迭代中返回的坐标进行相应的转换。

指定者:
接口 Shape 中的 getPathIterator
参数:
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,在这种情况下相应地转换在迭代返回的坐标。

指定者:
接口 Shape 中的 getPathIterator
参数:
at - 坐标在迭代中返回时,要应用于这些坐标的可选的 AffineTransform,或者需要撤消转换时为 null
flatness - 在使用连接端点的直线取代细分的曲线之前,给定曲线的控制点可以从共线变化的最大量。由于多平形是平面的,因此可以忽略 flatness 参数。
返回:
返回 PathIterator 对象,此对象提供对 Shape 对象的几何形状的访问。
从以下版本开始:
1.2

JavaTM Platform
Standard Ed. 6

提交错误或意见
有关更多的 API 参考资料和开发人员文档,请参阅 Java SE 开发人员文档。该文档包含更详细的、面向开发人员的描述,以及总体概述、术语定义、使用技巧和工作代码示例。

版权所有 2007 Sun Microsystems, Inc. 保留所有权利。 请遵守许可证条款。另请参阅文档重新分发政策