Module  java.desktop
软件包  java.awt

Class Polygon

  • All Implemented Interfaces:
    ShapeSerializable


    public class Polygon
    extends Object
    implements Shape, Serializable
    Polygon类封装了坐标空间内封闭的二维区域的描述。 该区域由任意数量的线段限定,每个线段是多边形的一侧。 在内部,多边形包括(x,y)坐标对的列表,其中每对定义多边形的顶点 ,并且两个连续的对是作为多边形的一侧的线的端点。 (x,y)点的第一个和最后一对由一个关闭多边形的线段连接起来。 这个Polygon被定义为偶数绕组规则。 有关偶数绕组规则的定义,请参阅WIND_EVEN_ODD 这个类的命中测试方法,其中包括containsintersectsinside方法,用在描述的内部性定义Shape类评论。
    从以下版本开始:
    1.0
    另请参见:
    ShapeSerialized Form
    • 字段详细信息

      • npoints

        public int npoints
        总分数。 npoints代表有效点的这个数Polygon ,并且可能小于元素的数量xpoints或者ypoints 该值可以为NULL。
        从以下版本开始:
        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)
    • 构造方法详细信息

      • 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 - 如果 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)
        平移的顶点 PolygondeltaX沿x轴和由 deltaY沿y轴。
        参数
        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
        Specified by:
        getBounds在接口 Shape
        结果
        一个 Rectangle定义了这个 Polygon的范围。
        从以下版本开始:
        1.1
        另请参见:
        Shape.getBounds2D()
      • getBoundingBox

        @Deprecated
        public Rectangle getBoundingBox​()
        已过时。 从JDK 1.1版开始,由getBounds()替代。
        返回这个 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)
        已过时。 从JDK 1.1版开始,由contains(int, int)代替。
        确定此 Polygon是否包含指定的坐标。
        参数
        x - 要测试的指定X坐标
        y - 要测试的指定Y坐标
        结果
        true如果这个Polygon包含指定的坐标(x,y) ; 否则为false
        从以下版本开始:
        1.0
        另请参见:
        contains(double, double)
      • getBounds2D

        public Rectangle2D getBounds2D​()
        返回ShapegetBounds方法更高精度和更准确的边界框。 请注意,不保证返回的Rectangle2D是封闭的最小边界框Shape ,只表示Shape完全在指定的范围内Rectangle2D 此方法返回的边界框通常比getBounds方法返回的getBounds更小,因为溢出问题永远不会失败,因为返回值可以是使用双精度值存储维度的Rectangle2D的实例。

        请注意, definition of insideness可能导致shape定义轮廓上的shape不能被视为包含在返回的bounds对象中的情况,但仅在原始shape中这些点也未被包含的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所述
        Specified by:
        contains在接口 Shape
        参数
        x - 要测试的指定X坐标
        y - 要测试的指定Y坐标
        结果
        true如果指定的坐标在Shape边界内; 否则为false
        从以下版本开始:
        1.2
      • contains

        public boolean contains​(Point2D p)
        测试指定Point2D是的边界内Shape ,如所描述的definition of insideness
        Specified by:
        contains在接口 Shape
        参数
        p - 要测试的指定的 Point2D
        结果
        true如果指定Point2D是的边界内Shape ; 否则为false
        从以下版本开始:
        1.2
      • 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对象执行更精确的几何交集计算,因此如果需要更精确的答案,则可以使用它。
        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实现保守返回true当:
        • Rectangle2DShape相交的概率很高,但是
        • 准确地确定这个交叉点的计算是非常昂贵的。
        这意味着对于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实现保守返回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
        另请参见:
        AreaShape.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包含Rectangle2Dintersects方法返回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几何的Polygon
        从以下版本开始:
        1.2
      • getPathIterator

        public PathIterator getPathIterator​(AffineTransform at,
                                            double flatness)
        返回迭代器对象沿的边界进行迭代Shape ,并提供访问的轮廓的几何Shape 只有SEG_MOVETO,SEG_LINETO和SEG_CLOSE点类型由迭代器返回。 由于多边形已经平坦,因此flatness参数将被忽略。 可以指定可选的AffineTransform在这种情况下,相应地转换迭代中返回的坐标。
        Specified by:
        getPathIterator在接口 Shape
        参数
        at - 要在迭代中返回时应用于坐标的可选 AffineTransform ,如果需要未转换的坐标, null
        flatness - 给定曲线的控制点的最大量可以在细分曲线被连接端点的直线代替之前从共线变化。 由于多边形已经平坦,因此flatness参数将被忽略。
        结果
        一个 PathIterator对象,可以访问 Shape对象的几何。
        从以下版本开始:
        1.2