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, wait
getBounds2D, getPathIterator
public 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
和intersect
Shape
完全包含矩形区域是昂贵的计算。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
和intersect
Shape
完全包含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.