模块  java.desktop
软件包  java.awt.geom

Class Path2D

  • 实现的所有接口
    ShapeCloneable
    已知直接子类:
    Path2D.DoublePath2D.Float

    public abstract class Path2D
    extends Object
    implements Shape, Cloneable
    Path2D类提供简单而灵活的形状,表示任意几何路径。 它可以完全代表PathIterator接口可以迭代的任何路径,包括它的所有段类型和绕组规则,并且它实现了Shape接口的所有基本命中测试方法。

    处理可以使用浮点精度表示和使用的数据时,请使用Path2D.Float 对于需要精度或双精度范围的数据,请使用Path2D.Double

    Path2D提供了几何路径的基本构造和管理所需的那些设施以及上述接口的实现,几乎没有增加的解释。 如果操作封闭几何形状的内部超出简单的命中测试是有用的,那么Area类提供了专门针对封闭数字的附加功能。 虽然两个类名义上都实现了Shape界面,但它们的目的不同,它们共同提供了两个有用的几何形状视图,其中Path2D主要处理由路径段形成的轨迹, Area更多地处理2D几何空间的封闭区域的解释和操作。

    PathIterator接口具有构成路径的段类型的更详细描述,以及控制如何确定路径内部或外部的区域的缠绕规则。

    从以下版本开始:
    1.6
    • 方法详细信息

      • moveTo

        public abstract void moveTo​(double x,
                                    double y)
        通过移动到以double精度指定的指定坐标,向路径添加点。
        参数
        x - 指定的X坐标
        y - 指定的Y坐标
        从以下版本开始:
        1.6
      • lineTo

        public abstract void lineTo​(double x,
                                    double y)
        通过从当前坐标绘制直线到以double精度指定的新指定坐标,将路径添加到路径。
        参数
        x - 指定的X坐标
        y - 指定的Y坐标
        从以下版本开始:
        1.6
      • quadTo

        public abstract void quadTo​(double x1,
                                    double y1,
                                    double x2,
                                    double y2)
        通过绘制与当前坐标和指定坐标(x2,y2)相交的二次曲线,使用指定点(x1,y1)作为二次参数控制点,将由两个新点定义的曲线段添加到路径。 所有坐标都以双精度指定。
        参数
        x1 - 二次控制点的X坐标
        y1 - 二次控制点的Y坐标
        x2 - 最终结束点的X坐标
        y2 - 最终终点的Y坐标
        从以下版本开始:
        1.6
      • curveTo

        public abstract void curveTo​(double x1,
                                     double y1,
                                     double x2,
                                     double y2,
                                     double x3,
                                     double y3)
        通过绘制与当前坐标和指定坐标(x3,y3)相交的Bézier曲线,使用指定的点(x1,y1)(x2,y2)作为Bézier控制点,将由三个新点定义的曲线段添加到路径中。 所有坐标都以双精度指定。
        参数
        x1 - 第一个Bézier控制点的X坐标
        y1 - 第一个Bézier控制点的Y坐标
        x2 - 第二个Bézier控制点的X坐标
        y2 - 第二个Bézier控制点的Y坐标
        x3 - 最终结束点的X坐标
        y3 - 最终结束点的Y坐标
        从以下版本开始:
        1.6
      • closePath

        public final void closePath()
        通过将一条直线绘制回最后一个moveTo的坐标来关闭当前子路径。 如果路径已经关闭,则此方法无效。
        从以下版本开始:
        1.6
      • append

        public final void append​(Shape s,
                                 boolean connect)
        将指定的Shape对象的几何图形追加到路径,可能Shape新几何图形连接到具有线段的现有路径段。 如果connect参数为true且路径不为空,则附加的Shape的几何中的任何初始moveTo将变为lineTo段。 如果目的地这种连接的坐标lineTo段匹配当前打开的子路径,则段被省略多余的结束坐标。 忽略指定的Shape的缠绕规则,并且附加的几何图形由为此路径指定的缠绕规则控制。
        参数
        s - Shape其几何图形附加到此路径
        connect - 一个布尔值,用于控制是否将初始 moveTo段转换为 lineTo段以将新几何图形连接到现有路径
        从以下版本开始:
        1.6
      • append

        public abstract void append​(PathIterator pi,
                                    boolean connect)
        将指定的PathIterator对象的几何图形追加到路径,可能会将新几何图形连接到带有线段的现有路径段。 如果connect参数为true且路径不为空,则附加的Shape的几何中的任何初始moveTo将变为lineTo段。 如果这样的连接lineTo段的目标坐标与当前打开的子路径的结束坐标匹配,则该段被省略为多余的。 忽略指定的Shape的缠绕规则,并且附加的几何图形由为此路径指定的缠绕规则控制。
        参数
        pi - 其几何图形附加到此路径的 PathIterator
        connect - 一个布尔值,用于控制是否将初始 moveTo段转换为 lineTo段以将新几何图形连接到现有路径
        从以下版本开始:
        1.6
      • getWindingRule

        public final int getWindingRule()
        返回填充样式缠绕规则。
        结果
        表示当前缠绕规则的整数。
        从以下版本开始:
        1.6
        另请参见:
        WIND_EVEN_ODDWIND_NON_ZEROsetWindingRule(int)
      • getCurrentPoint

        public final Point2D getCurrentPoint()
        返回最近添加到路径末尾的坐标作为Point2D对象。
        结果
        包含路径结束坐标的 Point2D对象,如果路径中没有点, null
        从以下版本开始:
        1.6
      • reset

        public final void reset()
        将路径重置为空。 追加位置被设置回路径的开头,并且忘记了所有坐标和点类型。
        从以下版本开始:
        1.6
      • transform

        public abstract void transform​(AffineTransform at)
        使用指定的AffineTransform转换此路径的几何。 几何体在原位转换,永久地更改此对象定义的边界。
        参数
        at - 用于转换区域的 AffineTransform
        从以下版本开始:
        1.6
      • createTransformedShape

        public final Shape createTransformedShape​(AffineTransform at)
        返回一个新的Shape表示此Path2D的转换版本。 请注意,此方法未指定返回值的确切类型和坐标精度。 该方法将返回一个Shape,该Shape包含的变换几何体的精度不低于当前维护的Path2D ,但它也可能不包含更多精度。 如果结果中精度与存储大小的权衡很重要,则应使用Path2D.FloatPath2D.Double子类中的便捷构造函数来明确选择。
        参数
        at - AffineTransform用于转换新的 Shape
        结果
        一个新的 Shape ,转换为指定的 AffineTransform
        从以下版本开始:
        1.6
      • getBounds

        public final Rectangle getBounds()
        返回一个整数Rectangle完全包围Shape 请注意,不保证返回的Rectangle是最小的边框包围Shape ,只表示Shape完全在指定的范围内Rectangle 如果Shape溢出整数数据类型的有限范围,则返回的Rectangle也可能无法完全包含Shape getBounds2D方法通常返回更严格的边界框,因为它具有更强的表示灵活性。

        请注意, definition of insideness可能会导致4663204939526定义轮廓上的shape可能不被视为包含在返回的bounds对象中,但仅限于原始shape未包含这些点的情况。

        如果point是内部shape根据contains(point)方法,那么它必须是内部返回Rectangle界限根据对象contains(point)所述的方法bounds 特别:

        shape.contains(x,y)需要bounds.contains(x,y)

        如果point不在shape ,则它可能仍包含在bounds对象中:

        bounds.contains(x,y)并不shape.contains(x,y)

        Specified by:
        getBounds ,界面 Shape
        结果
        整数 Rectangle ,完全包含 Shape
        从以下版本开始:
        1.6
        另请参见:
        Shape.getBounds2D()
      • contains

        public static boolean contains​(PathIterator pi,
                                       double x,
                                       double y)
        测试指定的坐标是否在指定的PathIterator的闭合边界内。

        此方法为Shape接口的实现者提供了基本功能,以实现对Shape.contains(double, double)方法的支持。

        参数
        pi - 指定的 PathIterator
        x - 指定的X坐标
        y - 指定的Y坐标
        结果
        true如果指定的坐标在指定的PathIterator ; 否则为false
        从以下版本开始:
        1.6
      • contains

        public static boolean contains​(PathIterator pi,
                                       Point2D p)
        测试指定Point2D在指定的封闭边界内PathIterator

        此方法为Shape接口的实现者提供了基本功能,以实现对Shape.contains(Point2D)方法的支持。

        参数
        pi - 指定的 PathIterator
        p - 指定的 Point2D
        结果
        true如果指定的坐标在指定的PathIterator ; 否则为false
        从以下版本开始:
        1.6
      • contains

        public final boolean contains​(double x,
                                      double y)
        测试指定的坐标是否在 Shape的边界内,如 definition of insideness所述
        Specified by:
        contains ,界面 Shape
        参数
        x - 要测试的指定X坐标
        y - 要测试的指定Y坐标
        结果
        true若指定坐标位于Shape边界内; 否则为false
        从以下版本开始:
        1.6
      • contains

        public final boolean contains​(Point2D p)
        测试指定Point2D是的边界内Shape ,如所描述的definition of insideness
        Specified by:
        contains ,界面 Shape
        参数
        p - 要测试的指定 Point2D
        结果
        true如果指定Point2D是的边界内Shape ; 否则为false
        从以下版本开始:
        1.6
      • contains

        public static boolean contains​(PathIterator pi,
                                       double x,
                                       double y,
                                       double w,
                                       double h)
        测试指定的矩形区域是否完全在指定的PathIterator的封闭边界内。

        此方法为Shape接口的实现者提供了基本工具,以实现对Shape.contains(double, double, double, double)方法的支持。

        在指定的矩形区域与路径的一段相交的情况下,该方法对象可以保守地返回false,但该段不表示路径的内部和外部之间的边界。 如果它们是具有绕组规则的路径的一部分,或者如果这些段在相反方向上回缩使得两组段彼此抵消而没有任何外部区域落在它们之间,则这些段可以完全位于路径的内部。他们。 为了确定段是否代表路径内部的真实边界,将需要涉及路径的所有段和绕组规则的大量计算,因此超出了该实现的范围。

        参数
        pi - 指定的 PathIterator
        x - 指定的X坐标
        y - 指定的Y坐标
        w - 指定矩形区域的宽度
        h - 指定矩形区域的高度
        结果
        true如果指定的PathIterator包含指定的矩形区域; 否则为false
        从以下版本开始:
        1.6
      • contains

        public static boolean contains​(PathIterator pi,
                                       Rectangle2D r)
        测试指定Rectangle2D是完全指定的封闭边界内PathIterator

        此方法为Shape接口的实现者提供了基本功能,以实现对Shape.contains(Rectangle2D)方法的支持。

        在指定的矩形区域与路径的一段相交的情况下,该方法对象可以保守地返回false,但该段不表示路径的内部和外部之间的边界。 如果它们是具有绕组规则的路径的一部分,或者如果这些段在相反方向上被回缩 ,使得这两个段彼此抵消而没有任何外部区域落在它们之间,则这些段可以完全位于路径的内部。他们。 为了确定段是否代表路径内部的真实边界,将需要涉及路径的所有段和绕组规则的大量计算,因此超出了该实现的范围。

        参数
        pi - 指定的 PathIterator
        r - 指定的 Rectangle2D
        结果
        true如果指定的PathIterator包含指定的Rectangle2D ; 否则为false
        从以下版本开始:
        1.6
      • contains

        public final 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对象执行更精确的几何计算,因此如果需要更精确的答案,则可以使用它。

        在指定的矩形区域与路径的一段相交的情况下,该方法对象可以保守地返回false,但该段不表示路径的内部和外部之间的边界。 如果它们是具有绕组规则的路径的一部分,或者如果这些段在相反方向上回缩使得两组段彼此抵消而没有任何外部区域落在它们之间,则这些段可以完全位于路径的内部。他们。 为了确定段是否代表路径内部的真实边界,将需要涉及路径的所有段和绕组规则的大量计算,因此超出了该实现的范围。

        Specified by:
        contains ,界面 Shape
        参数
        x - 指定矩形区域左上角的X坐标
        y - 指定矩形区域左上角的Y坐标
        w - 指定矩形区域的宽度
        h - 指定矩形区域的高度
        结果
        true如果内部Shape完全包含指定矩形区域; false否则或者,如果Shape包含矩形区域并且intersects方法返回true并且包含计算将太昂贵而无法执行。
        从以下版本开始:
        1.6
        另请参见:
        AreaShape.intersects(double, double, double, double)
      • contains

        public final boolean contains​(Rectangle2D r)
        测试Shape的内部Shape完全包含指定的Rectangle2D Shape.contains()方法允许Shape实施保守地返回false时:
        • intersect方法返回true
        • 用于确定Shape是否完全包含Rectangle2D的计算非常昂贵。
        这意味着对于某些Shapes这种方法也可能返回false即使Shape包含Rectangle2D Area类比大多数Shape对象执行更精确的几何计算,因此如果需要更精确的答案,则可以使用它。

        在指定的矩形区域与路径的一段相交的情况下,该方法对象可以保守地返回false,但该段不表示路径的内部和外部之间的边界。 如果它们是具有绕组规则的路径的一部分,或者如果这些段在相反方向上回缩使得两组段彼此抵消而没有任何外部区域落在它们之间,则这些段可以完全位于路径的内部。他们。 为了确定段是否代表路径内部的真实边界,将需要涉及路径的所有段和绕组规则的大量计算,因此超出了该实现的范围。

        Specified by:
        contains ,界面 Shape
        参数
        r - 指定的 Rectangle2D
        结果
        true如果内部Shape完全包含Rectangle2D ; false否则,或者,如果Shape包含Rectangle2D并且intersects方法返回true并且包含计算将太昂贵而无法执行。
        从以下版本开始:
        1.6
        另请参见:
        Shape.contains(double, double, double, double)
      • intersects

        public static boolean intersects​(PathIterator pi,
                                         double x,
                                         double y,
                                         double w,
                                         double h)
        测试指定的PathIterator的内部是否与指定的一组直角坐标的内部相交。

        此方法为Shape接口的实现者提供了基本工具,以实现对Shape.intersects(double, double, double, double)方法的支持。

        在指定的矩形区域与路径的一段相交的情况下,该方法对象可以保守地返回true,但该段不表示路径的内部和外部之间的边界。 如果路径的一些区段在相反方向上回缩使得两组区段彼此抵消而在它们之间没有任何内部区域,则可能发生这种情况。 为了确定段是否代表路径内部的真实边界,将需要涉及路径的所有段和绕组规则的大量计算,因此超出了该实现的范围。

        参数
        pi - 指定的 PathIterator
        x - 指定的X坐标
        y - 指定的Y坐标
        w - 指定直角坐标的宽度
        h - 指定直角坐标的高度
        结果
        true如果指定的PathIterator与指定的一组直角坐标的内部相互交叉; 否则为false
        从以下版本开始:
        1.6
      • intersects

        public static boolean intersects​(PathIterator pi,
                                         Rectangle2D r)
        测试指定的内部PathIterator相交指定的内部Rectangle2D

        此方法为Shape接口的实现者提供了基本功能,以实现对Shape.intersects(Rectangle2D)方法的支持。

        在指定的矩形区域与路径的一段相交的情况下,该方法对象可以保守地返回true,但该段不表示路径的内部和外部之间的边界。 如果路径的一些区段在相反方向上回缩使得两组区段彼此抵消而在它们之间没有任何内部区域,则可能发生这种情况。 为了确定段是否代表路径内部的真实边界,将需要涉及路径的所有段和绕组规则的大量计算,因此超出了该实现的范围。

        参数
        pi - 指定的 PathIterator
        r - 指定的 Rectangle2D
        结果
        true如果指定的PathIterator和指定的PathIterator的内部Rectangle2D交叉; 否则为false
        从以下版本开始:
        1.6
      • intersects

        public final boolean intersects​(double x,
                                        double y,
                                        double w,
                                        double h)
        测试Shape的内部是否与指定矩形区域的内部相交。 矩形区域被认为是交叉的Shape如果任何点被包含在双方的内部Shape和指定的矩形区域。

        Shape.intersects()方法允许Shape实施保守地返回true时:

        • 矩形区域与Shape交叉的概率很高,但是
        • 精确确定这个交叉点的计算非常昂贵。
        这意味着对于某些Shapes这种方法也可能返回true即使矩形区域没有相交Shape Area类比大多数Shape对象执行更精确的几何交叉计算,因此如果需要更精确的答案,则可以使用它。

        在指定的矩形区域与路径的一段相交的情况下,该方法对象可以保守地返回true,但该段不表示路径的内部和外部之间的边界。 如果路径的一些区段在相反方向上回缩使得两组区段彼此抵消而在它们之间没有任何内部区域,则可能发生这种情况。 为了确定段是否代表路径内部的真实边界,将需要涉及路径的所有段和绕组规则的大量计算,因此超出了该实现的范围。

        Specified by:
        intersects ,界面 Shape
        参数
        x - 指定矩形区域左上角的X坐标
        y - 指定矩形区域左上角的Y坐标
        w - 指定矩形区域的宽度
        h - 指定矩形区域的高度
        结果
        true如果Shape的内部与矩形区域的内部相交,或者两者都很可能相交并且交叉计算的成本太高而无法执行; 否则为false
        从以下版本开始:
        1.6
        另请参见:
        Area
      • intersects

        public final boolean intersects​(Rectangle2D r)
        测试Shape的内部是否与指定的Rectangle2D的内部相交。 Shape.intersects()方法允许Shape实现在Shape情况下保守地返回true
        • Rectangle2DShape交叉的概率很高,但是
        • 精确确定这个交叉点的计算非常昂贵。
        这意味着对于某些Shapes这种方法也可能返回true即使Rectangle2D不相交Shape Area类比大多数Shape对象执行更精确的几何交集计算,因此如果需要更精确的答案,则可以使用它。

        在指定的矩形区域与路径的一段相交的情况下,该方法对象可以保守地返回true,但该段不表示路径的内部和外部之间的边界。 如果路径的一些区段在相反方向上回缩使得两组区段彼此抵消而在它们之间没有任何内部区域,则可能发生这种情况。 为了确定段是否代表路径内部的真实边界,将需要涉及路径的所有段和绕组规则的大量计算,因此超出了该实现的范围。

        Specified by:
        intersects ,界面 Shape
        参数
        r - 指定的 Rectangle2D
        结果
        true如果Shape的内部与指定的Rectangle2D的内部相交,或者两者都很可能相交并且交叉计算的成本太高而无法执行; 否则为false
        从以下版本开始:
        1.6
        另请参见:
        Shape.intersects(double, double, double, double)
      • getPathIterator

        public final PathIterator getPathIterator​(AffineTransform at,
                                                  double flatness)
        返回迭代器对象,该对象沿Shape边界进行迭代,并提供对Shape轮廓几何体的Shape平视图的访问。

        迭代器仅返回SEG_MOVETO,SEG_LINETO和SEG_CLOSE点类型。

        如果指定了可选的AffineTransform ,则会相应地转换迭代中返回的坐标。

        弯曲段的细分量由flatness参数控制,该参数指定未平坦变换曲线上的任何点可以偏离返回的平坦路径段的最大距离。 请注意,可能会默默地施加对展平路径精度的限制,从而导致非常小的展平参数被视为较大的值。 此限制(如果有)由所使用的特定实现定义。

        每次调用此方法都会返回一个新的PathIterator对象,该对象独立于同时使用的任何其他PathIterator对象遍历Shape对象几何。

        建议但不能保证实现Shape接口的对象隔离Shape迭代,这些迭代是在此类迭代期间可能对原始对象的几何体发生的任何更改。

        此类的迭代器不是多线程安全的,这意味着此Path2D类不保证对此Path2D对象的几何的修改不会影响已在进行中的该几何的任何迭代。

        Specified by:
        getPathIterator in interface Shape
        参数
        at - 可选的 AffineTransform应用于迭代中返回的坐标,如果需要未转换的坐标则 null
        flatness - 允许线段用于近似弯曲段的最大距离偏离原始曲线上的任何点
        结果
        一个新的 PathIterator独立地横穿的几何形状的平面视图 Shape
        从以下版本开始:
        1.6
      • clone

        public abstract Object clone()
        创建与此对象相同的类的新对象。
        重写:
        cloneObject
        结果
        这个实例的克隆。
        异常
        OutOfMemoryError - 如果内存不足。
        从以下版本开始:
        1.6
        另请参见:
        Cloneable
      • trimToSize

        public abstract void trimToSize()
        将此Path2D实例的容量调整为其当前大小。 应用程序可以使用此操作来最小化路径的存储。
        从以下版本开始:
        10