public abstract class Path2D extends Object implements Shape, Cloneable
Path2D类提供了一个简单而又灵活的形状,表示任意的几何路径。
它可以完全表示可以由迭代的任何路径PathIterator接口包括其所有段类型和绕组规则,它实现了所有的基本命中测试方法Shape接口。
使用Path2D.Float与可表示且能使用浮点精度的数据的时候。 使用Path2D.Double对于需要双精度的准确性或范围的数据。
Path2D提供了基本构建和管理几何路径所需的这些设施,上述界面的实现几乎没有添加解释。 如果操作封闭几何形状的内部空间是非常有用的,那么Area课程提供了特别针对封闭图形的附加功能。 虽然这两个类名义上实现Shape接口,它们在目的不同,它们一起提供了一个几何形状,其中两个有用的视图Path2D主要处理由路径段和形成的轨迹Area更多地处理解释和2D几何空间封闭区域的操纵。
PathIterator接口对组成路径的段类型和绕组规则进行了更详细的描述,该规则控制如何确定哪些区域在路径内部或外部。
| Modifier and Type | Class and Description |
|---|---|
static class |
Path2D.Double
Double类定义了一个几何路径,坐标存储在双精度浮点中。
|
static class |
Path2D.Float
Float类定义了一个几何路径,坐标存储在单精度浮点中。
|
| Modifier and Type | Field and Description |
|---|---|
static int |
WIND_EVEN_ODD
用于确定路径内部的偶数绕组规则。
|
static int |
WIND_NON_ZERO
用于确定路径内部的非零绕组规则。
|
| Modifier and Type | Method and Description |
|---|---|
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 ,如所描述的
definition of insideness 。
|
boolean |
contains(double x, double y, double w, double h)
测试
Shape的内部
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 ,如所描述的definition of insideness 。
|
boolean |
contains(Rectangle2D r)
测试
Shape的内部
Shape全部包含指定的
Rectangle2D 。
|
Shape |
createTransformedShape(AffineTransform at)
返回一个新
Shape表示此的转换版本
Path2D 。
|
abstract void |
curveTo(double x1, double y1, double x2, double y2, double x3, double y3)
通过绘制与当前坐标和指定坐标(x3,y3)
(x3,y3)的Bézier曲线,使用指定点
(x1,y1)和
(x2,y2)作为Bézier控制点,将一个由三个新点定义的曲线段添加到路径。
|
Rectangle |
getBounds()
返回一个整数 Rectangle完全包围Shape 。
|
Point2D |
getCurrentPoint()
|
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)
(x2,y2) ,使用指定点
(x1,y1)作为二次参数控制点,将一个由两个新点定义的曲线段添加到路径。
|
void |
reset()
将路径重置为空。
|
void |
setWindingRule(int rule)
将此路径的绕组规则设置为指定值。
|
abstract void |
transform(AffineTransform at)
使用指定的 AffineTransform 转换此路径的几何。
|
equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitgetBounds2D, getPathIteratorpublic static final int WIND_EVEN_ODD
PathIterator.WIND_EVEN_ODD ,
Constant Field Values
public static final int WIND_NON_ZERO
PathIterator.WIND_NON_ZERO ,
Constant Field Values
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 - 一个布尔值,用于控制是否将初始的
moveTo段转换为
lineTo段以将新的几何连接到现有路径
public abstract void append(PathIterator pi, boolean connect)
PathIterator对象的几何体附加到路径,可能将新几何体连接到具有线段的现有路径段。
如果connect参数是true和路径不是空的,则任何初始moveTo在所附的几何形状Shape变成一个lineTo段。
如果这种连接lineTo段的目标坐标与当前打开的子路径的结束坐标匹配,那么该段被省略为多余的。
指定的卷绕规则Shape被忽略,并且在所附的几何形状由该路径所指定的缠绕规则支配。
pi - 其几何被附加到该路径的
PathIterator
connect - 一个布尔值,用于控制是否将初始的
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)
Shape表示此的转换版本Path2D 。
请注意,此方法未指定返回值的确切类型和坐标精度。
该方法将返回一个Shape,其转换几何的精度不会比目前Path2D Path2D更低,但也可能不包含更多的精度。
如果结果中的精度与存储大小的权衡很重要,那么应该使用Path2D.Float和Path2D.Double子类中的方便 构造函数来进行选择。
at -
AffineTransform用于转换新的
Shape 。
Shape ,转换与指定的
AffineTransform 。
public final Rectangle getBounds()
Rectangle完全包围Shape 。
需要注意的是没有保证返回Rectangle是最小的边框包围Shape ,只表示Shape完全在指定的范围内Rectangle 。
如果Shape溢出整数数据类型的有限范围,返回的Rectangle也可能无法完全封闭Shape 。
getBounds2D方法通常返回更严格的边界框,因为它具有更大的表示灵活性。
请注意, definition of insideness可能导致在返回的bounds对象中可能不会将shape定义大纲上的点shape包含的情况,但仅在原始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)
getBounds在接口
Shape
Rectangle完全封闭了
Shape 。
Shape.getBounds2D()
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否则
public static boolean contains(PathIterator pi, Point2D p)
Point2D是指定的封闭边界内PathIterator 。
该方法为Shape接口的实现者提供了实现Shape.contains(Point2D)方法支持的基本功能。
pi - 指定的
PathIterator
p - 指定的
Point2D
true如果指定的坐标在指定的内部PathIterator ;
false否则
public final boolean contains(double x,
double y)
Shape ,如所描述的
definition of insideness 。
public final boolean contains(Point2D p)
Point2D是的边界内Shape ,如所描述的definition of insideness 。
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 - 指定矩形区域的高度
true如果指定的PathIterator包含指定的矩形区域;
false否则。
public static boolean contains(PathIterator pi, Rectangle2D r)
Rectangle2D是完全指定的封闭边界内PathIterator 。
该方法为Shape接口的实现者提供了实现对Shape.contains(Rectangle2D)方法的支持的基本功能。
在指定的矩形区域与路径的段相交的情况下,该方法对象可以保守地返回false,但该段不表示路径的内部和外部之间的边界。 如果它们是具有WIND_NON_ZERO卷绕规则的路径的一部分,或者如果这些段在相反方向上被回溯以使得两组段彼此抵消而没有任何外部区域落在他们。 为了确定段代表路径内部的真实边界将需要涉及路径和绕组规则的所有段的广泛计算,因此超出了该实现的范围。
pi - 指定的
PathIterator
r - 一个指定的
Rectangle2D
true如果指定的PathIterator包含指定的Rectangle2D ;
false否则。
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 。
所述Area类比大多数执行更精确的几何计算Shape对象,因此可以在需要更精确的答案一起使用。
在指定的矩形区域与路径的段相交的情况下,该方法对象可以保守地返回false,但该段不表示路径的内部和外部之间的边界。 如果它们是具有WIND_NON_ZERO卷绕规则的路径的一部分,或者如果片段在相反方向上被回缩以使得两组片段彼此抵消而没有任何外部区域落在其间,则这样的片段可以完全位于路径的内部中他们。 为了确定段代表路径内部的真实边界将需要涉及路径和绕组规则的所有段的广泛计算,因此超出了该实现的范围。
contains在界面
Shape
x - 指定矩形区域左上角的X坐标
y - 指定矩形区域左上角的Y坐标
w - 指定矩形区域的宽度
h - 指定矩形区域的高度
true如果内部Shape完全包含指定矩形区域;
false否则或如果Shape包含矩形区域,并且intersects方法返回true并且包含计算将太昂贵执行。
Area , Shape.intersects(double, double, double, double)
public final boolean contains(Rectangle2D r)
Shape的内部Shape全部包含指定的Rectangle2D 。
该Shape.contains()方法允许Shape实现谨慎地返回false时:
intersect方法返回true和 Shape完全包含Rectangle2D的代价太高。 Shapes这个方法可能会返回false即使Shape包含Rectangle2D 。
所述Area类比大多数执行更精确的几何计算Shape对象,因此可以在需要更精确的答案一起使用。
在指定的矩形区域与路径的段相交的情况下,该方法对象可以保守地返回false,但该段不表示路径的内部和外部之间的边界。 如果它们是具有WIND_NON_ZERO绕组规则的路径的一部分,或者如果段在相反方向上被回溯以使得两组段彼此抵消而没有任何外部区域落在其间,则这些段可以完全位于路径的内部中他们。 为了确定段代表路径内部的真实边界将需要涉及路径和绕组规则的所有段的广泛计算,因此超出了该实现的范围。
contains中的
Shape
r - 指定的
Rectangle2D
true如果内部的Shape完全包含Rectangle2D ;
false否则或如果Shape包含Rectangle2D和intersects方法返回true并且遏制计算将太昂贵执行。
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 - 指定的直角坐标的高度
true如果指定的PathIterator和指定的一组直角坐标的内部相交;
false否则。
public static boolean intersects(PathIterator pi, Rectangle2D r)
PathIterator 是否与指定的内部相交Rectangle2D 。
该方法为Shape接口的实现者提供了实现Shape.intersects(Rectangle2D)方法支持的基本功能。
在指定的矩形区域与路径的段相交的情况下,该方法对象可以保守地返回true,但该段不表示路径的内部和外部之间的边界。 如果路径的一些段的一部分在相反的方向回溯,使得两组段相互抵消而没有它们之间的任何内部区域,则可能发生这种情况。 为了确定段代表路径内部的真实边界将需要涉及路径和绕组规则的所有段的广泛计算,因此超出了该实现的范围。
pi - 指定的
PathIterator
r - 指定的
Rectangle2D
true如果指定的PathIterator和指定的内部Rectangle2D相交;
false否则。
public final boolean intersects(double x,
double y,
double w,
double h)
Shape相交的指定矩形区域的内部。
矩形区域被认为是交叉的Shape如果任何点被包含在双方的内部Shape和指定的矩形区域。
Shape.intersects()方法允许一个Shape保守地返回true当:
Shape相交的Shape很高,但是 Shapes这个方法可能会返回true即使矩形区域不相交Shape 。
所述Area类执行几何相交的更精确的计算比大多数Shape可以,如果需要更精确的答案被使用的对象,因此。
在指定的矩形区域与路径的段相交的情况下,该方法对象可以保守地返回true,但该段不表示路径的内部和外部之间的边界。 如果路径的一些段的一部分在相反的方向回溯,使得两组段相互抵消而没有它们之间的任何内部区域,则可能发生这种情况。 为了确定段代表路径内部的真实边界将需要涉及路径和绕组规则的所有段的广泛计算,因此超出了该实现的范围。
intersects在界面
Shape
x - 指定矩形区域左上角的X坐标
y - 指定矩形区域左上角的Y坐标
w - 指定矩形区域的宽度
h - 指定矩形区域的高度
true如果Shape的内部和矩形区域的内部相交,或者两者都很可能相交,并且交叉点计算将太昂贵执行;
false否则。
Area
public final boolean intersects(Rectangle2D r)
Shape相交指定的内部Rectangle2D 。
该Shape.intersects()方法允许Shape实现谨慎地返回true时:
Rectangle2D和Shape相交的Shape很高,但是 Shapes这个方法可能会返回true即使Rectangle2D不相交Shape 。
所述Area类执行几何相交的更精确的计算比大多数Shape可以,如果需要更精确的答案被使用的对象,因此。
在指定的矩形区域与路径的段相交的情况下,该方法对象可以保守地返回true,但该段不表示路径的内部和外部之间的边界。 如果路径的一些段的一部分在相反的方向回溯,使得两组段相互抵消而没有它们之间的任何内部区域,则可能发生这种情况。 为了确定段代表路径内部的真实边界将需要涉及路径和绕组规则的所有段的广泛计算,因此超出了该实现的范围。
intersects在界面
Shape
r - 指定的
Rectangle2D
true如果内部Shape和指定的内部Rectangle2D相交,或两者均是高度可能相交及交叉点计算。将执行太贵;
false否则。
Shape.intersects(double, double, double, double)
public final PathIterator getPathIterator(AffineTransform at, double flatness)
Shape边界进行迭代的迭代器对象,并提供对Shape外形几何体的展平视图的访问。
只有SEG_MOVETO,SEG_LINETO和SEG_CLOSE点类型由迭代器返回。
如果指定了可选的AffineTransform,则相应地AffineTransform迭代中返回的坐标。
弯曲段的细分量由flatness参数控制,该参数指定未平坦化变形曲线上的任何点可以偏离返回的平坦化路径段的最大距离。 注意,平坦化路径的精度的限制可能会被默认地施加,导致非常小的平坦化参数被视为较大的值。 这个限制(如果有的话)是由所使用的特定实现来定义的。
对此方法的每次调用都将返回一个新的PathIterator对象,该对象与所使用的任何其他PathIterator对象同时Shape对象几何。
建议但不能保证实现Shape接口的对象隔离在此类迭代期间原始对象的几何可能发生的任何更改的迭代。
此类的迭代器不是多线程安全的,这意味着此Path2D类不保证对此Path2D对象的几何的Path2D不会影响已处理的该几何的任何迭代。
getPathIterator在界面
Shape
at - 要在迭代中返回时应用于
at的可选
AffineTransform ,如果需要未转换的
null ,则为null
flatness - 用于近似曲线段的线段的最大距离允许偏离原始曲线上的任何点
PathIterator独立地横穿的几何形状的平面视图
Shape 。
public abstract Object clone()
clone在类别
Object
OutOfMemoryError - 如果没有足够的内存
Cloneable
Submit a bug or feature
For further API reference and developer documentation, see Java SE Documentation. That documentation contains more detailed, developer-targeted descriptions, with conceptual overviews, definitions of terms, workarounds, and working code examples.
Copyright © 1993, 2014, Oracle and/or its affiliates. All rights reserved.