|
JavaTM 2 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
且路徑是非空(null)的,則添加的 Shape
幾何形狀的所有初始 moveTo
將被轉換為 lineTo
段。如果這種連接 lineTo
段的目標坐標與當前開放子路徑的結束坐標比對,那麼該線段將被作為多餘線段忽略。指定 Shape
的旋繞規則將被忽略,添加的幾何形狀由為此路徑指定的旋繞規則來管理。
s
- 其幾何形狀將被添加到此路徑的 Shape
connect
- 一個 boolean 值,用於控制是否將初始 moveTo
段轉換為 lineTo
段,從而將新幾何形狀連接到現有路徑public abstract void append(PathIterator pi, boolean connect)
PathIterator
物件的幾何形狀添加到路徑中,可能要使用一條線段將新幾何形狀連接到現有路徑段。如果 connect
參數為 true
且路徑是非空(null)的,則添加的 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 2 Platform Standard Ed. 6 |
|||||||||
上一個類別 下一個類別 | 框架 無框架 | |||||||||
摘要: 巢狀 | 欄位 | 建構子 | 方法 | 詳細資訊: 欄位 | 建構子 | 方法 |
版權所有 2008 Sun Microsystems, Inc. 保留所有權利。請遵守GNU General Public License, version 2 only。