public abstract class Path2D extends Object implements Shape, Cloneable
Path2D类提供了一个简单而灵活的形状,表示一个任意的几何路径。它完全可以代表任何路径可迭代的
PathIterator接口包括其所有分部类型和缠绕规律和实现所有的
Shape接口的基本命中测试方法。
使用Path2D.Float当处理的数据可以表示和使用浮点精度。使用数据要求精度或双精度范围Path2D.Double。
Path2D正好提供了这些设施需要很少的几何路径的实现上述接口的基本建设和管理的补充解释。如果是操纵封闭几何图形超出了简单的点击测试然后Area类提供了额外的能力,专门针对闭合图形的内部有用。虽然名义上实行Shape接口类,他们的目的和他们一起提供两个有用的几何形状,Path2D主要涉及一个路径段和Area形成轨迹涉及更多的解释和封闭区域的二维几何空间操作有不同意见。
的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测试的内部完全包含指定的矩形区域。
|
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)
|
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)
添加一个弯曲段,由三个新点定义,通过绘制Bézier曲线相交的当前坐标和指定的坐标
(x3,y3)的路径,使用指定的点
(x1,y1)和
(x2,y2) BéBezier控制点。
|
Rectangle |
getBounds()
返回一个整数
Rectangle完全封闭
Shape。
|
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。
|
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)的路径,使用指定的点
(x1,y1)和
(x2,y2) BéBezier控制点。所有的坐标都是以双精度指定的。
x1 -第一个Bé贝塞尔控制点的x坐标
y1 -第一个Bé贝塞尔控制点的Y坐标
x2 -第二Bé曲线控制点的x坐标
y2 -第二Bé曲线控制点的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和路径不为空,然后在附加的
Shape几何任何初始
moveTo变成
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对象。
null
Point2D对象如果有没有点的路径。
public final void reset()
public abstract void transform(AffineTransform at)
AffineTransform。的几何变换的地方,它永久地改变这个对象定义的边界。
at -用于转换区
AffineTransform
public final Shape createTransformedShape(AffineTransform at)
Path2D转换版本的新
Shape。请注意,此方法未指定返回值的精确类型和坐标精度。该方法将返回一个形状包含不精确转化几何比这
Path2D目前维持,但它可能包含不精密或者。如果权衡精度和存储大小的结果很重要,然后在
Path2D.Float和
Path2D.Double子类的构造函数应该使用方便选择明确。
at用于变换的一种新的
AffineTransform
Shape。
Shape,用指定的
AffineTransform转化。
public final Rectangle getBounds()
Rectangle完全封闭
Shape。需要注意的是不能保证返回的
Rectangle是最小包围盒包围
Shape,只有
Shape完全在于在显示
Rectangle。返回的
Rectangle也未能完全封闭
Shape如果
Shape溢出整数数据类型的范围。的
getBounds2D方法一般返回一个紧密的包围盒由于在表示其更大的灵活性。
请注意, definition of insideness可导致的情况下,点上的shape定义轮廓可能不被视为包含在返回的bounds对象,但只有在这些点的情况下,也不被认为是包含在原始的shape。
如果一个point在shape根据contains(point)方法,那么它必须在返回的Rectangle界根据的bounds contains(point)方法的具体对象:
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)
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)
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时:
true和intersectShape完全包含矩形区域是昂贵的计算。Shapes这个方法可能返回
false即使
Shape包含矩形区域。的
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测试的内部完全包含指定的
Rectangle2D。的
Shape.contains()方法允许
Shape实施保守的回报
false时:
true和intersectShape完全包含Rectangle2D是昂贵的计算。Shapes这个方法可能返回
false即使
Shape包含
Rectangle2D。的
Area类执行更精确的几何计算比大多数
Shape对象,因此可以更准确的答案是需要用。
这种方法的对象可以保守治疗的情况下,指定矩形区域相交的一段路径返回false,但是这段并不代表路径的内部和外部之间的边界。这段可以完全位于该路径的内部如果段折回方向相反,两套段相互抵消,没有任何外部地区下降他们之间是一个WIND_NON_ZERO缠绕规律路径部分或。确定是否段代表的路径的内部的真正的边界将需要广泛的计算,涉及的路径和蜿蜒的规则的所有部分,因此超出了这个实现的范围。
contains 接口
Shape
r -指定
Rectangle2D
true如果的
Shape内部完全包含
false
Rectangle2D;否则,如果
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相交,但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相交,但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指定返回的坐标在迭代进行相应的转换。
对弯曲段细分总量由flatness参数控制,它指定在不平的转化曲线任意点偏离回到平坦的路径段的最大距离。请注意,平坦的路径的精度上的限制可能会被悄悄地施加,导致非常小的平坦化参数被视为更大的值。这个限制,如果有一个,是由所使用的特定的实现定义的。
每次调用此方法返回一个新的PathIterator对象遍历Shape对象几何独立使用任何其他PathIterator对象同时。
这是建议,但不保证,对象实施Shape界面分离迭代过程中任何发生在原物体的几何形状的变化可能在这样的迭代。
对于这类迭代器不是线程安全的,这意味着这Path2D类不保证本Path2D修改对象的几何不影响任何迭代几何已经在过程。
getPathIterator 接口
Shape
at -适用于坐标作为他们在迭代返回一个可选的
AffineTransform,或
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.