Module java.desktop
Package java.awt.geom

Class Path2D

java.lang.Object
java.awt.geom.Path2D
所有已实现的接口:
Shape, Cloneable
直接已知的子类:
Path2D.Double, Path2D.Float

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

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

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

PathIterator接口有关路径组成的类型和控制如何确定哪些区域在路径内部或外部的绕组规则的更详细描述。

封闭类层次图:
Path2D的封闭类层次图Path2D的封闭类层次图
自版本:
1.6
  • Nested Class Summary

    Nested Classes
    Modifier and Type
    Class
    Description
    static class 
    Double类定义了一个使用双精度浮点数存储坐标的几何路径。
    static class 
    Float类定义了一个使用单精度浮点数存储坐标的几何路径。
  • Field Summary

    Fields
    Modifier and Type
    Field
    Description
    static final int
    用于确定路径内部的奇偶绕组规则。
    static final int
    用于确定路径内部的非零绕组规则。
  • Method Summary

    Modifier and Type
    Method
    Description
    abstract void
    append(PathIterator pi, boolean connect)
    将指定的PathIterator对象的几何形状附加到路径,可能使用线段将新几何形状连接到现有路径段。
    final void
    append(Shape s, boolean connect)
    将指定的Shape对象的几何形状附加到路径,可能使用线段将新几何形状连接到现有路径段。
    abstract Object
    clone()
    创建与此对象相同类的新对象。
    final void
    通过绘制一条直线返回到最后一个moveTo的坐标,关闭当前子路径。
    final boolean
    contains(double x, double y)
    测试指定坐标是否在Shape的边界内,如内部定义的定义描述。
    final boolean
    contains(double x, double y, double w, double h)
    测试Shape的内部是否完全包含指定的矩形区域。
    static boolean
    contains(PathIterator pi, double x, double y)
    测试指定坐标是否在指定PathIterator的封闭边界内。
    static boolean
    contains(PathIterator pi, double x, double y, double w, double h)
    测试指定矩形区域是否完全在指定PathIterator的封闭边界内。
    static boolean
    测试指定的Point2D是否在指定PathIterator的封闭边界内。
    static boolean
    测试指定的Rectangle2D是否完全在指定PathIterator的封闭边界内。
    final boolean
    测试指定的Point2D是否在Shape的边界内,如内部定义的定义描述。
    final boolean
    测试Shape的内部是否完全包含指定的Rectangle2D
    final Shape
    返回表示此Path2D的变换版本的新Shape
    abstract void
    curveTo(double x1, double y1, double x2, double y2, double x3, double y3)
    添加一个曲线段,由三个新点定义,通过绘制一条贝塞尔曲线将当前坐标和指定坐标(x3,y3)相交,使用指定点(x1,y1)(x2,y2)作为贝塞尔控制点。
    final Rectangle
    返回完全包围Shape的整数Rectangle
    final Point2D
    返回最近添加到路径末尾的坐标作为Point2D对象。
    final PathIterator
    getPathIterator(AffineTransform at, double flatness)
    返回一个迭代器对象,沿着Shape的边界迭代,并提供Shape轮廓几何的平坦视图。
    final int
    返回填充样式绕组规则。
    final boolean
    intersects(double x, double y, double w, double h)
    测试Shape的内部是否与指定矩形区域的内部相交。
    static boolean
    intersects(PathIterator pi, double x, double y, double w, double h)
    测试指定的PathIterator的内部是否与指定的一组矩形坐标的内部相交。
    static boolean
    测试指定的PathIterator的内部是否与指定的Rectangle2D的内部相交。
    final boolean
    测试Shape的内部是否与指定的Rectangle2D的内部相交。
    abstract void
    lineTo(double x, double y)
    通过从当前坐标到双精度指定坐标绘制一条直线,向路径添加一个点。
    abstract void
    moveTo(double x, double y)
    通过移动到双精度指定的坐标,向路径添加一个点。
    abstract void
    quadTo(double x1, double y1, double x2, double y2)
    通过绘制一个二次曲线段,由两个新点定义,将当前坐标和指定坐标(x2,y2)相交,使用指定点(x1,y1)作为二次曲线控制点,向路径添加一个曲线段。
    final void
    reset()
    将路径重置为空。
    final void
    setWindingRule(int rule)
    将此路径的绕组规则设置为指定值。
    abstract void
    使用指定的AffineTransform转换此路径的几何形状。
    abstract void
    将此Path2D实例的容量修剪到其当前大小。

    Methods declared in class java.lang.Object

    equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

    Methods declared in interface java.awt.Shape

    getBounds2D, getPathIterator
  • Field Details

  • Method Details

    • moveTo

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

      public abstract void lineTo(double x, double y)
      通过从当前坐标到双精度指定坐标绘制一条直线,向路径添加一个点。
      参数:
      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)相交,使用指定点(x1,y1)(x2,y2)作为贝塞尔控制点,向路径添加一个曲线段。所有坐标均以双精度指定。
      参数:
      x1 - 第一个贝塞尔控制点的X坐标
      y1 - 第一个贝塞尔控制点的Y坐标
      x2 - 第二个贝塞尔控制点的X坐标
      y2 - 第二个贝塞尔控制点的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对象的几何形状附加到路径中,可能使用线段将新几何形状连接到现有路径段。如果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
      参见:
    • setWindingRule

      public final void setWindingRule(int rule)
      将此路径的绕组规则设置为指定值。
      参数:
      rule - 表示指定绕组规则的整数
      抛出:
      IllegalArgumentException - 如果rule既不是WIND_EVEN_ODD也不是WIND_NON_ZERO
      自版本:
      1.6
      参见:
    • 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)
      返回表示此Path2D的转换版本的新Shape。请注意,此方法未指定返回值的确切类型和坐标精度。该方法将返回一个包含转换几何形状的Shape,其精度不低于此Path2D当前维护的精度,但也可能不包含更多精度。如果结果中精度与存储大小之间的权衡重要,则应使用Path2D.FloatPath2D.Double子类中的便利构造函数来明确选择。
      参数:
      at - 用于转换新ShapeAffineTransform
      返回:
      一个新的Shape,使用指定的AffineTransform进行转换。
      自版本:
      1.6
    • getBounds

      public final Rectangle getBounds()
      返回完全包围Shape的整数Rectangle。请注意,不能保证返回的Rectangle是包围Shape的最小边界框,只能保证Shape完全位于指定的Rectangle内。如果Shape溢出整数数据类型的有限范围,则返回的Rectangle也可能无法完全包围Shape。由于其在表示上更加灵活,getBounds2D方法通常返回更紧密的边界框。

      请注意,内部定义的概念可能导致定义轮廓上的点可能不被认为包含在返回的bounds对象中,但只有在这些点也不被认为包含在原始shape中的情况下才会发生。

      如果一个point根据contains(point)方法在shape内部,则根据boundscontains(point)方法,它必须在返回的Rectangle边界对象内部。具体来说:

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

      如果一个point不在shape内部,则它可能仍然包含在bounds对象中:

      bounds.contains(x,y)不意味着shape.contains(x,y)

      指定者:
      getBounds 在接口 Shape
      返回:
      完全包围Shape的整数Rectangle
      自版本:
      1.6
      参见:
    • contains

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

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

      参数:
      pi - 指定的PathIterator
      x - 指定的X坐标
      y - 指定的Y坐标
      返回:
      如果指定坐标在指定的PathIterator内部,则返回true;否则返回false
      自版本:
      1.6
    • contains

      public static boolean contains(PathIterator pi, Point2D p)
      测试指定的Point2D是否在闭合的指定PathIterator的边界内。

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

      参数:
      pi - 指定的PathIterator
      p - 指定的Point2D
      返回:
      如果指定坐标在指定的PathIterator内部,则返回true;否则返回false
      自版本:
      1.6
    • contains

      public final boolean contains(double x, double y)
      测试指定坐标是否在Shape的边界内,如内部定义所述。
      指定者:
      contains 在接口 Shape
      参数:
      x - 要测试的指定X坐标
      y - 要测试的指定Y坐标
      返回:
      如果指定坐标在Shape的边界内,则返回true;否则返回false
      自版本:
      1.6
    • contains

      public final boolean contains(Point2D p)
      测试指定的Point2D是否在Shape的边界内,如内部定义所述。
      指定者:
      contains 在接口 Shape
      参数:
      p - 要测试的指定Point2D
      返回:
      如果指定的Point2DShape的边界内,则返回true;否则返回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,即指定的矩形区域与路径的某一段相交,但该段并不代表路径内部和外部之间的边界。如果这些段完全位于路径内部,那么它们可能是路径的一部分,具有WIND_NON_ZERO绕组规则,或者如果这些段以相反方向重迹,使得两组段互相抵消,而它们之间没有任何外部区域落在它们之间。要确定这些段是否代表路径内部的真实边界,需要进行涉及路径的所有段和绕组规则的广泛计算,因此超出了此实现的范围。

      参数:
      pi - 指定的PathIterator
      x - 指定的X坐标
      y - 指定的Y坐标
      w - 指定矩形区域的宽度
      h - 指定矩形区域的高度
      返回:
      如果指定的PathIterator包含指定的矩形区域,则返回true;否则返回false
      自:
      1.6
    • contains

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

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

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

      参数:
      pi - 指定的PathIterator
      r - 指定的Rectangle2D
      返回:
      如果指定的PathIterator包含指定的Rectangle2D,则返回true;否则返回false
      自:
      1.6
    • contains

      public final boolean contains(double x, double y, double w, double h)
      测试Shape的内部是否完全包含指定的矩形区域。所有位于矩形区域内部的坐标必须位于整个矩形区域内的Shape中,才能被视为包含在Shape内。

      Shape.contains()方法允许Shape实现在以下情况下保守地返回false

      • intersect方法返回true
      • 用于确定Shape是否完全包含矩形区域的计算代价过高。
      这意味着对于某些Shapes,即使Shape包含矩形区域,此方法可能会返回false。与大多数Shape对象相比,Area类执行更精确的几何计算,因此如果需要更精确的答案,则可以使用该类。

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

      指定者:
      contains 在接口 Shape
      参数:
      x - 指定矩形区域左上角的X坐标
      y - 指定矩形区域左上角的Y坐标
      w - 指定矩形区域的宽度
      h - 指定矩形区域的高度
      返回:
      如果Shape的内部完全包含指定的矩形区域,则返回true;否则返回false,或者如果Shape包含矩形区域且intersects方法返回true,并且包含计算代价过高,则返回false
      自:
      1.6
      参见:
    • contains

      public final boolean contains(Rectangle2D r)
      测试Shape的内部是否完全包含指定的Rectangle2D。当intersect方法返回true且用于确定Shape是否完全包含Rectangle2D的计算代价过高时,Shape.contains()方法允许Shape实现保守地返回false
      • 这意味着对于某些Shapes,即使Shape包含Rectangle2D,此方法可能会返回false。与大多数Shape对象相比,Area类执行更精确的几何计算,因此如果需要更精确的答案,则可以使用该类。

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

      指定者:
      contains 在接口 Shape
      参数:
      r - 指定的Rectangle2D
      返回:
      如果Shape的内部完全包含Rectangle2D,则返回true;否则返回false,或者如果Shape包含Rectangle2Dintersects方法返回true,并且包含计算代价过高,则返回false
      自:
      1.6
      参见:
    • 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 - 指定矩形坐标的高度
      返回值:
      如果指定的 PathIterator 和指定的矩形坐标集的内部相交,则返回 true;否则返回 false
      自版本:
      1.6
    • intersects

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

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

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

      参数:
      pi - 指定的 PathIterator
      r - 指定的 Rectangle2D
      返回值:
      如果指定的 PathIterator 和指定的 Rectangle2D 的内部相交,则返回 true;否则返回 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,即使矩形区域与 Shape 不相交,此方法可能返回 trueArea 类执行比大多数 Shape 对象更准确的几何相交计算,因此如果需要更精确的答案,则可以使用该类。

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

      指定者:
      intersects 在接口 Shape
      参数:
      x - 指定矩形区域左上角的 X 坐标
      y - 指定矩形区域左上角的 Y 坐标
      w - 指定矩形区域的宽度
      h - 指定矩形区域的高度
      返回值:
      如果 Shape 的内部与矩形区域的内部相交,或者两者高度可能相交且计算交集的代价过高,则返回 true;否则返回 false
      自版本:
      1.6
      参见:
    • intersects

      public final boolean intersects(Rectangle2D r)
      测试 Shape 的内部是否与指定的 Rectangle2D 的内部相交。 Shape.intersects() 方法允许 Shape 实现在以下情况下保守地返回 true
      • 矩形区域和 Shape 有很高的可能相交,但
      • 准确确定此交集的计算代价过高。
      这意味着对于某些 Shapes,即使矩形区域与 Shape 不相交,此方法可能返回 trueArea 类执行比大多数 Shape 对象更准确的几何相交计算,因此如果需要更精确的答案,则可以使用该类。

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

      指定者:
      intersects 在接口 Shape
      参数:
      r - 指定的 Rectangle2D
      返回值:
      如果 Shape 的内部与指定的 Rectangle2D 的内部相交,或者两者高度可能相交且计算交集的代价过高,则返回 true;否则返回 false
      自版本:
      1.6
      参见:
    • getPathIterator

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

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

      如果指定了可选的 AffineTransform,则迭代中返回的坐标将相应地进行变换。

      曲线段的细分量由 flatness 参数控制,该参数指定未扁平化的变换曲线上的任何点与返回的扁平化路径段之间的最大距离。请注意,可能会悄悄地对扁平化路径的准确性施加限制,导致非常小的扁平化参数被视为较大的值。如果存在限制,则由使用的特定实现定义。

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

      建议但不保证实现 Shape 接口的对象会将正在进行的迭代与在此类迭代期间可能发生的原始对象几何变化隔离开来。

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

      指定者:
      getPathIterator 在接口 Shape
      参数:
      at - 可选的 AffineTransform,在迭代返回的坐标中应用,如果希望使用未变换的坐标,则为 null
      flatness - 用于近似曲线段的线段允许偏离原始曲线上任何点的最大距离
      返回值:
      一个新的 PathIterator,独立地遍历 Shape 几何的扁平视图。
      自版本:
      1.6
    • clone

      public abstract Object clone()
      创建与此对象相同类的新对象。
      覆盖:
      clone 在类 Object
      返回值:
      此实例的克隆。
      抛出:
      OutOfMemoryError - 如果内存不足
      自版本:
      1.6
      参见:
    • trimToSize

      public abstract void trimToSize()
      将此 Path2D 实例的容量修剪到其当前大小。应用程序可以使用此操作来最小化路径的存储。
      自版本:
      10