|
JavaTM Platform Standard Ed. 6 |
|||||||||
上一个类 下一个类 | 框架 无框架 | |||||||||
摘要: 嵌套 | 字段 | 构造方法 | 方法 | 详细信息: 字段 | 构造方法 | 方法 |
java.lang.Object java.awt.geom.Path2D
public abstract class Path2D
Path2D
类提供一个表示任意几何形状路径的简单而又灵活的形状。它可以完整地表示可通过 PathIterator
接口进行迭代的任何路径(包括其所有线段类型和旋绕规则),并实现 Shape
接口的所有基本目标测试方法。
在处理能够表示且能使用浮点精度的数据时,可以使用 Path2D.Float
。对于要求双精度的准确性或范围的数据,可以使用 Path2D.Double
。
Path2D
为基本构造、几何路径管理以及几乎没有附加解释的上述接口的实现精确地提供其所需的设施。如果除简单目标测试以外,它对操作封闭几何形状的内部有用,则 Area
类提供专用于封闭图形的附加容量。虽然两个类名义上都可以实现 Shape
接口,但它们的目的各不一样,并且它们一起提供了两个有用的几何形状视图,在该视图上,Path2D
主要处理由路径段形成的轨迹,而 Area
主要处理解释和操作 2D 几何空间的封闭区域。
PathIterator
接口有更多关于组成路径的线段类型、控制如何确定哪些区域位于路径之内或之外的旋绕规则的详细描述。
嵌套类摘要 | |
---|---|
static class |
Path2D.Double
Double 类定义了一条几何路径,它具有以双精度浮点值形式存储的坐标。 |
static class |
Path2D.Float
Float 类定义了一条几何路径,它具有以单精度浮点值形式存储的坐标。 |
字段摘要 | |
---|---|
static int |
WIND_EVEN_ODD
用于确定路径内部的奇偶旋绕规则。 |
static int |
WIND_NON_ZERO
用于确定路径内部的非零旋绕规则。 |
方法摘要 | |
---|---|
abstract void |
append(PathIterator pi,
boolean connect)
将指定 PathIterator 对象的几何形状添加到路径中,可能要使用一条线段将新几何形状连接到现有路径段。 |
void |
append(Shape s,
boolean connect)
将指定 Shape 对象的几何形状添加到路径中,可能要使用一条线段将新几何形状连接到现有路径段。 |
abstract Object |
clone()
创建一个与此对象具有相同类的新对象。 |
void |
closePath()
通过绘制一条向后延伸到最后一个 moveTo 的坐标的直线,封闭当前子路径。 |
boolean |
contains(double x,
double y)
测试指定坐标是否在 Shape 的边界内。 |
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 |
contains(PathIterator pi,
Point2D p)
测试指定的 Point2D 是否在指定 PathIterator 的封闭边界内。 |
static boolean |
contains(PathIterator pi,
Rectangle2D r)
测试指定的 Rectangle2D 是否完全在指定 PathIterator 的封闭区域内。 |
boolean |
contains(Point2D p)
测试指定的 Point2D 是否在 Shape 的边界内。 |
boolean |
contains(Rectangle2D r)
测试 Shape 内部是否完全包含指定的 Rectangle2D 。 |
Shape |
createTransformedShape(AffineTransform at)
返回一个表示此 Path2D 变换形式的新 Shape 。 |
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 曲线的控制点,可以将由三个新点定义的曲线段添加到路径中。 |
Rectangle |
getBounds()
返回一个完全包围 Shape 的整型 Rectangle 。 |
Point2D |
getCurrentPoint()
返回最近添加到路径尾部的坐标(以 Point2D 对象形式)。 |
PathIterator |
getPathIterator(AffineTransform at,
double flatness)
返回一个沿着 Shape 边界迭代并提供对 Shape 轮廓几何形状的平面视图访问的迭代器对象。 |
int |
getWindingRule()
返回填充风格旋绕规则。 |
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 |
intersects(PathIterator pi,
Rectangle2D r)
测试指定 PathIterator 的内部是否与指定 Rectangle2D 的内部相交。 |
boolean |
intersects(Rectangle2D r)
测试 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) 用作二次曲线参数控制点,可以将由两个新点定义的曲线段添加到路径中。 |
void |
reset()
将路径重置为空。 |
void |
setWindingRule(int rule)
将此路径的旋绕规则设置为指定值。 |
abstract void |
transform(AffineTransform at)
使用指定的 AffineTransform 变换此路径的几何形状。 |
从类 java.lang.Object 继承的方法 |
---|
equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
从接口 java.awt.Shape 继承的方法 |
---|
getBounds2D, getPathIterator |
字段详细信息 |
---|
public static final int WIND_EVEN_ODD
PathIterator.WIND_EVEN_ODD
,
常量字段值public static final int WIND_NON_ZERO
PathIterator.WIND_NON_ZERO
,
常量字段值方法详细信息 |
---|
public abstract void moveTo(double x, double y)
x
- 指定的 X 坐标y
- 指定的 Y 坐标public abstract void lineTo(double x, double y)
x
- 指定的 X 坐标y
- 指定的 Y 坐标public abstract void quadTo(double x1, double y1, double x2, double y2)
(x2,y2)
都相交的二次曲线,并将指定点 (x1,y1)
用作二次曲线参数控制点,可以将由两个新点定义的曲线段添加到路径中。所有坐标都以双精度指定。
x1
- 二次曲线控制点的 X 坐标y1
- 二次曲线控制点的 Y 坐标x2
- 终端点的 X 坐标y2
- 终端点的 Y 坐标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 坐标public final void closePath()
moveTo
的坐标的直线,封闭当前子路径。如果该路径已封闭,则此方法无效。
public final void append(Shape s, boolean connect)
Shape
对象的几何形状添加到路径中,可能要使用一条线段将新几何形状连接到现有路径段。如果 connect
参数为 true
且路径是非空的,则添加的 Shape
几何形状的所有初始 moveTo
将被转换为 lineTo
段。如果这种连接 lineTo
段的目标坐标与当前开放子路径的结束坐标匹配,那么该线段将被作为多余线段忽略。指定 Shape
的旋绕规则将被忽略,添加的几何形状由为此路径指定的旋绕规则来管理。
s
- 其几何形状将被添加到此路径的 Shape
connect
- 一个 boolean 值,用于控制是否将初始 moveTo
段转换为 lineTo
段,从而将新几何形状连接到现有路径public abstract void append(PathIterator pi, boolean connect)
PathIterator
对象的几何形状添加到路径中,可能要使用一条线段将新几何形状连接到现有路径段。如果 connect
参数为 true
且路径是非空的,则添加的 Shape
几何形状的所有初始 moveTo
将被转换为 lineTo
段。如果这种连接 lineTo
段的目标坐标与当前开放子路径的结束坐标匹配,那么该线段将被作为多余线段忽略。指定 Shape
的旋绕规则将被忽略,添加的几何形状由为此路径指定的旋绕规则来管理。
pi
- 其几何形状将被添加到此路径的 PathIterator
connect
- 一个 boolean 值,用于控制是否将初始 moveTo
段转换为 lineTo
段,从而将新几何形状连接到现有路径public final int getWindingRule()
WIND_EVEN_ODD
,
WIND_NON_ZERO
,
setWindingRule(int)
public final void setWindingRule(int rule)
rule
- 表示指定旋绕规则的整数
IllegalArgumentException
- 如果 rule
既不是 WIND_EVEN_ODD
也不是 WIND_NON_ZERO
getWindingRule()
public final Point2D getCurrentPoint()
Point2D
对象形式)。
Point2D
对象;如果路径中没有任何点,则返回 null
。public final void reset()
public abstract void transform(AffineTransform at)
AffineTransform
变换此路径的几何形状。原地变换几何形状,它将永久更改由此对象定义的边界。
at
- 用于变换区域的 AffineTransform
public final Shape createTransformedShape(AffineTransform at)
Path2D
变换形式的新 Shape
。注意,没有为此方法指定返回值的确切类型和坐标精度。该方法将返回一个 Shape,它所包含的变换的几何形状精度不小于此 Path2D
当前维持的精度,但它也不可能大于该精度。如果精度与结果中存储量大小的权衡很重要,那么应该使用 Path2D.Float
和 Path2D.Double
子类中的一些便捷构造方法,使选择更明确。
at
- 用于变换新 Shape
的 AffineTransform
。
Shape
,它使用指定的 AffineTransform
变换而来。public final Rectangle getBounds()
Shape
的整型 Rectangle
。注意,不保证返回的 Rectangle
是包围 Shape
的最小边界框,只保证 Shape
完全位于指示的 Rectangle
中。如果 Shape
超出了整数数据类型的有效范围,则返回的 Rectangle
也可能不完全包围 Shape
。getBounds2D
方法由于在表示形式上具有更大的灵活性,所以通常返回更紧密的边界框。
Shape
中的 getBounds
Shape
的整型 Rectangle
。Shape.getBounds2D()
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
public static boolean contains(PathIterator pi, Point2D p)
Point2D
是否在指定 PathIterator
的封闭边界内。
此方法为 Shape
接口的实现程序提供了基本设施,以实现对 Shape.contains(Point2D)
方法的支持。
pi
- 指定的 PathIterator
p
- 指定的 Point2D
PathIterator
内,则返回 true
;否则返回 false
public final boolean contains(double x, double y)
Shape
的边界内。
Shape
中的 contains
x
- 要测试的指定的 X 坐标y
- 要测试的指定的 Y 坐标
Shape
边界内,则返回 true
;否则返回 false
。public final boolean contains(Point2D p)
Point2D
是否在 Shape
的边界内。
Shape
中的 contains
p
- 要测试的指定的 Point2D
Point2D
在 Shape
边界内,则返回 true
;否则返回 false
。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
。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
。public final boolean contains(double x, double y, double w, double h)
Shape
内部是否完全包含指定矩形区域。矩形区域内的所有坐标都必须位于 Shape
中,才可以认为整个矩形区域包含在 Shape
中。
在下列情况下,Shape.contains()
方法允许 Shape
实现谨慎地返回 false
:
intersect
方法返回 true
并且
Shape
是否完全包含矩形区域的代价太高。
Shape
,即使 Shape
包含矩形区域,此方法也可能返回 false
。如果需要更精确的答案,由于 Area
类比大多数 Shape
对象更为准确地执行几何计算,因此可以使用该类。
在指定矩形区域与路径段相交,但该路径段不表示路径内部和外部之间的边界的情况下,此方法对象可能会谨慎地返回 false。如果这些线段是遵守 WIND_NON_ZERO
旋绕规则的路径的一部分,或者这些线段反方向折回,从而两组线段互相抵消且两组线段间没有任何外部区域,那么这些线段可能完全位于路径内部。要确定线段是否表示路径内部的真实边界需要大量的计算,这些计算涉及所有路径段和旋绕规则,因此超出此实现的范围。
Shape
中的 contains
x
- 指定矩形区域左上角的 X 坐标y
- 指定矩形区域左上角的 Y 坐标w
- 指定矩形区域的宽度h
- 指定矩形区域的高度
Shape
内部完全包含指定矩形区域,则返回 true
;否则,如果 Shape
包含矩形区域、intersects
方法返回 true
且执行包含计算代价太高,则返回 false
。Area
,
Shape.intersects(double, double, double, double)
public final boolean contains(Rectangle2D r)
Shape
内部是否完全包含指定的 Rectangle2D
。在下列情况下,Shape.contains()
方法允许 Shape
实现谨慎地返回 false
:
intersect
方法返回 true
并且
Shape
是否完全包含 Rectangle2D
的代价太高。
Shape
,即使 Shape
包含 Rectangle2D
,此方法也可能返回 false
。如果需要更精确的答案,由于 Area
类比大多数 Shape
对象更为准确地执行几何计算,因此可以使用该类。
在指定矩形区域与路径段相交,但该路径段不表示路径内部和外部之间的边界的情况下,此方法对象可能会谨慎地返回 false。如果这些线段是遵守 WIND_NON_ZERO
旋绕规则的路径的一部分,或者这些线段反方向折回,从而两组线段互相抵消且两组线段间没有任何外部区域,那么这些线段可能完全位于路径内部。要确定线段是否表示路径内部的真实边界需要大量的计算,这些计算涉及所有路径段和旋绕规则,因此超出此实现的范围。
Shape
中的 contains
r
- 指定的 Rectangle2D
Shape
内部完全包含 Rectangle2D
,则返回 true
;否则,如果 Shape
包含 Rectangle2D
、intersects
方法返回 true
且执行包含计算代价太高,则返回 false
。Shape.contains(double, double, double, double)
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
。public static boolean intersects(PathIterator pi, Rectangle2D r)
PathIterator
的内部是否与指定 Rectangle2D
的内部相交。
此方法为 Shape
接口的实现程序提供基本设施,以实现对 Shape.intersects(Rectangle2D)
方法的支持。
在指定矩形区域与路径段相交,但该路径段不表示路径内部和外部之间的边界的情况下,此方法对象可能会谨慎地返回 true。如果路径的一些线段反方向折回,从而两组线段互相抵消且两组线段间没有任何外部区域,则可能发生这种情况。要确定线段是否表示路径内部的真实边界需要大量的计算,这些计算涉及所有路径段和旋绕规则,因此超出此实现的范围。
pi
- 指定的 PathIterator
r
- 指定的 Rectangle2D
PathIterator
和指定 Rectangle2D
的内部相交,则返回 true
;否则返回 false
。public final boolean intersects(double x, double y, double w, double h)
Shape
内部是否与指定矩形区域的内部相交。如果任何一个点既包含在 Shape
内,又包含在指定矩形区域内,则认为矩形区域与 Shape
相交。
在下列情况下,Shape.intersects()
方法允许 Shape
实现谨慎地返回 true
:
Shape
相交的可能性很大,但是
Shape
,即使矩形区域没有与该 Shape
相交,此方法也可能返回 true
。如果需要更精确的答案,由于 Area
类比大多数 Shape
对象更为准确地计算几何相交,因此可以使用该类。
在指定矩形区域与路径段相交,但该路径段不表示路径内部和外部之间的边界的情况下,此方法对象可能会谨慎地返回 true。如果路径的一些线段反方向折回,从而两组线段互相抵消且两组线段间没有任何外部区域,则可能发生这种情况。要确定线段是否表示路径内部的真实边界需要大量的计算,这些计算涉及所有路径段和旋绕规则,因此超出此实现的范围。
Shape
中的 intersects
x
- 指定矩形区域左上角的 X 坐标y
- 指定矩形区域左上角的 Y 坐标w
- 指定矩形区域的宽度h
- 指定矩形区域的高度
Shape
的内部区域与矩形的内部区域相交,或者相交的可能性很大且执行计算的代价太高,则返回 true
;否则返回 false
。Area
public final boolean intersects(Rectangle2D r)
Shape
内部是否与指定 Rectangle2D
内部相交。在下列情况下,Shape.intersects()
方法允许 Shape
实现谨慎地返回 true
:
Rectangle2D
与 Shape
相交的可能性很大,但是
Shape
,即使 Rectangle2D
没有与该 Shape
相交,此方法也可能返回 true
。如果需要更精确的答案,由于 Area
类比大多数 Shape
对象更为准确地计算几何相交,因此可以使用该类。
在指定矩形区域与路径段相交,但该路径段不表示路径内部和外部之间的边界的情况下,此方法对象可能会谨慎地返回 true。如果路径的一些线段反方向折回,从而两组线段互相抵消且两组线段间没有任何外部区域,则可能发生这种情况。要确定线段是否表示路径内部的真实边界需要大量的计算,这些计算涉及所有路径段和旋绕规则,因此超出此实现的范围。
Shape
中的 intersects
r
- 指定的 Rectangle2D
Shape
内部与指定 Rectangle2D
内部相交,或者相交的可能性很大且执行计算的代价太高,则返回 true
;否则返回 false
。Shape.intersects(double, double, double, double)
public PathIterator getPathIterator(AffineTransform at, double flatness)
Shape
边界迭代并提供对 Shape
轮廓几何形状的平面视图访问的迭代器对象。
迭代器只返回 SEG_MOVETO、SEG_LINETO 和 SEG_CLOSE 点类型。
如果指定一个可选 AffineTransform
,则相应地转换迭代中返回的坐标。
flatness
参数控制曲线段分段的数量,指定转换的不平曲线上任一点能够偏离返回的变平路径段的最大距离。注意,变平路径的精度限制可能稍微受到影响,使非常小的变平参数作为较大的值来处理。如果有这样的限制,那么该限制是由使用的特定实现定义的。
每次调用此方法都会返回一个最新的、遍历 Shape
对象几何形状的 PathIterator
对象,该对象独立于其他所有同时使用的 PathIterator
对象。
建议但不保证实现 Shape
接口的对象将进行中的迭代与该迭代期间可能对原始对象几何形状所做的任何更改隔离开来。
此类的迭代器不是多线程安全的,这意味着此 Path2D
类不保证对此 Path2D
对象几何形状所作的修改不会影响该几何形状已在处理中的迭代。
Shape
中的 getPathIterator
at
- 一个可选 AffineTransform
,用于在迭代中返回的坐标,如果需要未转换的坐标,则返回 null
flatness
- 用来近似曲线段的直线段偏离原始曲线上任一点的最大距离
Shape
几何形状的平面视图的 PathIterator
。public abstract Object clone()
Object
中的 clone
OutOfMemoryError
- 如果没有足够的内存。Cloneable
|
JavaTM Platform Standard Ed. 6 |
|||||||||
上一个类 下一个类 | 框架 无框架 | |||||||||
摘要: 嵌套 | 字段 | 构造方法 | 方法 | 详细信息: 字段 | 构造方法 | 方法 |
版权所有 2007 Sun Microsystems, Inc. 保留所有权利。 请遵守许可证条款。另请参阅文档重新分发政策。