JavaTM 2 Platform
Standard Ed. 5.0

java.awt.geom
类 GeneralPath

java.lang.Object
  继承者 java.awt.geom.GeneralPath
所有已实现的接口:
Shape, Cloneable

public final class GeneralPath
extends Object
implements Shape, Cloneable

GeneralPath 类表示根据直线、二次曲线和三次 (Bézier) 曲线构造的几何路径。它可以包含多个子路径。

缠绕规则指定确定路径内部的方式。缠绕规则有两种类型:EVEN_ODD 和 NON_ZERO。

EVEN_ODD 缠绕规则意味着,从路径外向区域内的点移动并穿过它时,路径的封闭区域在内部区域和外部区域之间交替变化。

NON_ZERO 缠绕规则意味着,如果从给定点朝任意方向向无穷大绘制射线并检查路径与射线相交的位置,当且仅当路径从左到右穿过射线的次数不等于路径从右到左穿过射线的次数时,点位于路径内。


字段摘要
static int WIND_EVEN_ODD
          用于确定路径内部的奇偶 (even-odd) 缠绕规则。
static int WIND_NON_ZERO
          用于确定路径内部的非零 (non-zero) 缠绕规则。
 
构造方法摘要
GeneralPath()
          构造一个新 GeneralPath 对象。
GeneralPath(int rule)
          构造一个新 GeneralPath 对象,使其具有指定缠绕规则以控制需要定义路径内部的操作。
GeneralPath(int rule, int initialCapacity)
          构造一个新 GeneralPath 对象,使其具有指定的缠绕规则和指定的初始容量,以存储路径坐标。
GeneralPath(Shape s)
          根据任意 Shape 对象构造一个新 GeneralPath 对象。
 
方法摘要
 void append(PathIterator pi, boolean connect)
          将指定 PathIterator 对象的几何形状追加到路径中,可能使用一条线段将新几何形状连接到现有的路径段。
 void append(Shape s, boolean connect)
          将指定 Shape 对象的几何形状追加到路径中,可能使用一条线段将新几何形状连接到现有的路径段。
 Object clone()
          创建一个与此对象具有相同类的新对象。
 void closePath()
          通过向最后 moveTo 的坐标绘制直线闭合当前子路径。
 boolean contains(double x, double y)
          测试指定坐标是否在 Shape 的边界内。
 boolean contains(double x, double y, double w, double h)
          测试指定矩形区域是否在 Shape 的边界内。
 boolean contains(Point2D p)
          测试指定 Point2D 是否在 Shape 的边界内。
 boolean contains(Rectangle2D r)
          测试指定 Rectangle2D 是否在 Shape 的边界内。
 Shape createTransformedShape(AffineTransform at)
          返回新变换的 Shape
 void curveTo(float x1, float y1, float x2, float y2, float x3, float y3)
          通过绘制与当前坐标及坐标 (x3,y3) 都相交的 Bézier 曲线,并将指定点 (x1,y1) 和 (x2,y2) 用作 Bézier 的控制点,将由三个新点定义的曲线段添加到路径中。
 Rectangle getBounds()
          返回路径的边界框。
 Rectangle2D getBounds2D()
          返回路径的边界框。
 Point2D getCurrentPoint()
          返回最近添加到路径尾部的坐标(作为 Point2D 对象)。
 PathIterator getPathIterator(AffineTransform at)
          返回一个沿 Shape 边界迭代并提供对 Shape 轮廓几何形状访问的 PathIterator 对象。
 PathIterator getPathIterator(AffineTransform at, double flatness)
          返回一个沿变平 Shape 边界迭代并提供对 Shape 轮廓几何形状的访问的 PathIterator 对象。
 int getWindingRule()
          返回填充风格缠绕规则。
 boolean intersects(double x, double y, double w, double h)
          测试此 Shape 的内部是否与指定矩形坐标集的内部相交。
 boolean intersects(Rectangle2D r)
          测试 Shape 内部是否与指定 Rectangle2D 内部相交。
 void lineTo(float x, float y)
          通过绘制一条从当前坐标到新指定坐标的直线在路径中添加点。
 void moveTo(float x, float y)
          通过移动到指定的坐标在路径中添加点。
 void quadTo(float x1, float y1, float x2, float y2)
          通过绘制与当前坐标及坐标 (x2,y2) 都相交的 Quadratic 曲线,并将指定点 (x1, y1) 用作二次曲线参数控制点,将由两个新点定义的曲线段添加到路径中。
 void reset()
          将路径重置为空。
 void setWindingRule(int rule)
          将此路径的缠绕规则设置为指定值。
 void transform(AffineTransform at)
          使用指定的 AffineTransform 变换此路径的几何形状。
 
从类 java.lang.Object 继承的方法
equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

字段详细信息

WIND_EVEN_ODD

public static final int WIND_EVEN_ODD
用于确定路径内部的奇偶 (even-odd) 缠绕规则。

另请参见:
常量字段值

WIND_NON_ZERO

public static final int WIND_NON_ZERO
用于确定路径内部的非零 (non-zero) 缠绕规则。

另请参见:
常量字段值
构造方法详细信息

GeneralPath

public GeneralPath()
构造一个新 GeneralPath 对象。如果对此路径执行的操作需要定义路径内部,则使用默认的 NON_ZERO 缠绕规则。

另请参见:
WIND_NON_ZERO

GeneralPath

public GeneralPath(int rule)
构造一个新 GeneralPath 对象,使其具有指定缠绕规则以控制需要定义路径内部的操作。

参数:
rule - 缠绕规则
另请参见:
WIND_EVEN_ODD, WIND_NON_ZERO

GeneralPath

public GeneralPath(int rule,
                   int initialCapacity)
构造一个新 GeneralPath 对象,使其具有指定的缠绕规则和指定的初始容量,以存储路径坐标。此数是对路径中路径段的初始猜测值,但是储量可以根据需要扩展,以存储任何添加到此路径的路径段。

参数:
rule - 缠绕规则
initialCapacity - 对路径中路径段数的估计
另请参见:
WIND_EVEN_ODD, WIND_NON_ZERO

GeneralPath

public GeneralPath(Shape s)
根据任意 Shape 对象构造一个新 GeneralPath 对象。此路径的所有初始几何形状和缠绕规则均取自指定的 Shape 对象。

参数:
s - 指定的 Shape 对象
方法详细信息

moveTo

public void moveTo(float x,
                   float y)
通过移动到指定的坐标在路径中添加点。

参数:
x, y - 指定的坐标

lineTo

public void lineTo(float x,
                   float y)
通过绘制一条从当前坐标到新指定坐标的直线在路径中添加点。

参数:
x, y - 指定的坐标

quadTo

public void quadTo(float x1,
                   float y1,
                   float x2,
                   float y2)
通过绘制与当前坐标及坐标 (x2,y2) 都相交的 Quadratic 曲线,并将指定点 (x1, y1) 用作二次曲线参数控制点,将由两个新点定义的曲线段添加到路径中。

参数:
x1, y1 - 第一个二次曲线控制点的坐标
x2, y2 - 最后一个端点的坐标

curveTo

public void curveTo(float x1,
                    float y1,
                    float x2,
                    float y2,
                    float x3,
                    float y3)
通过绘制与当前坐标及坐标 (x3,y3) 都相交的 Bézier 曲线,并将指定点 (x1,y1) 和 (x2,y2) 用作 Bézier 的控制点,将由三个新点定义的曲线段添加到路径中。

参数:
x1, y1 - 第一个 Béezier 控制点的坐标
x2, y2 - 第二个 Béezier 控制点的坐标
x3, y3 - 最后一个端点的坐标

closePath

public void closePath()
通过向最后 moveTo 的坐标绘制直线闭合当前子路径。如果已经闭合路径,则此方法无效。


append

public void append(Shape s,
                   boolean connect)
将指定 Shape 对象的几何形状追加到路径中,可能使用一条线段将新几何形状连接到现有的路径段。如果 connect 参数为 true 并且路径非空,则追加的 Shape 几何形状的全部初始 moveTo 将被转换为 lineTo 段。如果这种连接 lineTo 段的目标坐标匹配目前开放子路径的结束坐标,则将该段作为多余段忽略。指定 Shape 的缠绕规则将被忽略,追加的几何形状由为此路径指定的缠绕规则来管理。

参数:
s - 将其几何形状追加到此路径中的 Shape
connect - 一个布尔值,用于控制是否将初始 moveTo 段转换为 lineTo 段,以将新几何形状连接到现有路径

append

public void append(PathIterator pi,
                   boolean connect)
将指定 PathIterator 对象的几何形状追加到路径中,可能使用一条线段将新几何形状连接到现有的路径段。如果 connect 参数为 true 并且路径非空,则追加 Shape 几何形状的初始 moveTo 将被转换为 lineTo 段。如果这种连接 lineTo 段的目标坐标匹配目前开放路径的结束坐标,则将该线段作为多余线段忽略。指定 Shape 的缠绕规则将被忽略,追加的几何形状由为此路径指定的缠绕规则来管理。

参数:
pi - 其几何形状要被追加到此路径中的 PathIterator
connect - 一个布尔值,用于控制是否将初始 moveTo 段转换为 lineTo 段,以将新几何形状连接到现有路径

getWindingRule

public int getWindingRule()
返回填充风格缠绕规则。

返回:
表示当前缠绕规则的整数。
另请参见:
WIND_EVEN_ODD, WIND_NON_ZERO, setWindingRule(int)

setWindingRule

public void setWindingRule(int rule)
将此路径的缠绕规则设置为指定值。

参数:
rule - 表示指定缠绕规则的整数
抛出:
IllegalArgumentException - 如果 rule 既不是 WIND_EVEN_ODD 也不是 WIND_NON_ZERO
另请参见:
WIND_EVEN_ODD, WIND_NON_ZERO, getWindingRule()

getCurrentPoint

public Point2D getCurrentPoint()
返回最近添加到路径尾部的坐标(作为 Point2D 对象)。

返回:
包含路径结束坐标的 Point2D 对象,如果路径中不存在点,则返回 null

reset

public void reset()
将路径重置为空。将追加位置设置回路径的开头并遗弃所有坐标和点类型。


transform

public void transform(AffineTransform at)
使用指定的 AffineTransform 变换此路径的几何形状。原地变换几何形状,它将永久更改由此对象定义的边界。

参数:
at - 用于变换区域的 AffineTransform

createTransformedShape

public Shape createTransformedShape(AffineTransform at)
返回新变换的 Shape

参数:
at - 用于变换新 ShapeAffineTransform
返回:
Shape,它是使用指定的 AffineTransform 变换的。

getBounds

public Rectangle getBounds()
返回路径的边界框。

指定者:
接口 Shape 中的 getBounds
返回:
为当前路径划定边界的 Rectangle 对象。
另请参见:
Shape.getBounds2D()

getBounds2D

public Rectangle2D getBounds2D()
返回路径的边界框。

指定者:
接口 Shape 中的 getBounds2D
返回:
为当前路径划定边界的 Rectangle2D 对象。
另请参见:
Shape.getBounds()

contains

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

指定者:
接口 Shape 中的 contains
参数:
x, y - 指定的坐标
返回:
如果指定坐标在 Shape 的边界内,则返回 true;否则返回 false

contains

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

指定者:
接口 Shape 中的 contains
参数:
p - 指定的 Point2D
返回:
如果 Shape 包含指定的 Point2D,则返回 true;否则返回 false

contains

public boolean contains(double x,
                        double y,
                        double w,
                        double h)
测试指定矩形区域是否在 Shape 的边界内。

指定者:
接口 Shape 中的 contains
参数:
x, y - 指定的坐标
w - 指定矩形区域的宽度
h - 指定矩形区域的高度
返回:
如果 Shape 包含指定的矩形区域,则返回 true;否则返回 false
另请参见:
Area, Shape.intersects(double, double, double, double)

contains

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

指定者:
接口 Shape 中的 contains
参数:
r - 指定的 Rectangle2D
返回:
如果 Shape 为指定的 Rectangle2D 划定边界,则返回 true;否则返回 false
另请参见:
Shape.contains(double, double, double, double)

intersects

public boolean intersects(double x,
                          double y,
                          double w,
                          double h)
测试此 Shape 的内部是否与指定矩形坐标集的内部相交。

指定者:
接口 Shape 中的 intersects
参数:
x, y - 指定的坐标
w - 指定矩形坐标的宽度
h - 指定矩形坐标的高度
返回:
如果此 Shape 与指定矩形坐标集的内部相交,则返回 true;否则返回 false
另请参见:
Area

intersects

public boolean intersects(Rectangle2D r)
测试 Shape 内部是否与指定 Rectangle2D 内部相交。

指定者:
接口 Shape 中的 intersects
参数:
r - 指定的 Rectangle2D
返回:
如果此 Shape 与指定 Rectangle2D 的内部相交,则返回 true;否则返回 false
另请参见:
Shape.intersects(double, double, double, double)

getPathIterator

public PathIterator getPathIterator(AffineTransform at)
返回一个沿 Shape 边界迭代并提供对 Shape 轮廓几何形状访问的 PathIterator 对象。此类的迭代器不是多线程安全的,这意味着此 GeneralPath 类不保证对此 GeneralPath 对象几何形状所作的修改不会对该几何形状中正在进行的迭代产生影响。

指定者:
接口 Shape 中的 getPathIterator
参数:
at - AffineTransform
返回:
沿 Shape 边界迭代并提供对 Shape 轮廓几何形状访问的新 PathIterator

getPathIterator

public PathIterator getPathIterator(AffineTransform at,
                                    double flatness)
返回一个沿变平 Shape 边界迭代并提供对 Shape 轮廓几何形状的访问的 PathIterator 对象。此类的迭代器不是多线程安全的,这意味着此 GeneralPath 类不保证对此 GeneralPath 对象几何形状所作的修改不会对该几何形状中正在进行的迭代产生影响。

指定者:
接口 Shape 中的 getPathIterator
参数:
at - AffineTransform
flatness - 允许用来近似曲线段的直线段偏离原始曲线上任一点的最大距离
返回:
沿变平 Shape 边界迭代的新 PathIterator

clone

public Object clone()
创建一个与此对象具有相同类的新对象。

覆盖:
Object 中的 clone
返回:
此实例的一个副本。
抛出:
OutOfMemoryError - 如果没有足够的内存。
从以下版本开始:
1.2
另请参见:
Cloneable

JavaTM 2 Platform
Standard Ed. 5.0

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

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