|
JavaTM 2 Platform Standard Ed. 6 |
|||||||||
上一個類別 下一個類別 | 框架 無框架 | |||||||||
摘要: 巢狀 | 欄位 | 建構子 | 方法 | 詳細資訊: 欄位 | 建構子 | 方法 |
java.lang.Object java.awt.geom.Area
public class Area
Area
物件存儲和操作 2 維空間封閉區域的與解析無關的描述。在與其他 Area
物件合併時,Area
物件可以被變換,並可執行各種建構區域幾何形狀 (Constructive Area Geometry,CAG) 操作。CAG 操作包括對區域進行加
、減
、交
和異或
。有關各種操作的範例,請參閱連接的方法文檔。
Area
類別實作了 Shape
介面,並提供對所有目標測試和路徑迭代設施的完全支持,但 Area
在許多方面比一般化的路徑更具體:
Area
物件,就像通過 Graphics2D.fill
方法填充這些路徑一樣。
Area
輪廓的路徑幾何形狀類似於為了描述同一封閉 2 維區域而建構的路徑,但可以使用完全不同的型別和路徑段排序來完成路徑建構。
Area
時,一些並不總是很明顯但值得注意的問題包括:
Shape
中創建一個 Area
導致在 Area
物件中產生一個封閉的輪廓。
Shape
中創建一個 Area
將產生一個空的 Area
。該問題的一個常見範例是:用一條直線產生的 Area
將是空的,因為該直線無法封閉任何區域。一個空的 Area
將不會迭代其 PathIterator
物件中的任何幾何形狀。
Shape
可以分割成兩條(或更多條)子路徑,每條子路徑都封閉原始路徑的非相交部分之一。
Area
可以採用更多路徑段來描述相同的幾何形狀,即使在原始輪廓非常簡單和明顯時也是如此。正如人們所認識到的那樣,Area
類別必須在路徑上執行的分析可能並不能反映“簡單而明顯”的概念。
建構子摘要 | |
---|---|
Area()
創建空區域的預設建構子。 |
|
Area(Shape s)
Area 類別可以根據指定的 Shape 物件創建區域幾何形狀。 |
方法摘要 | |
---|---|
void |
add(Area rhs)
將指定 Area 的形狀添加到此 Area 的形狀中。 |
Object |
clone()
返回此 Area 物件的精確副本。 |
boolean |
contains(double x,
double y)
測試指定坐標是否在 Shape 的邊界內。 |
boolean |
contains(double x,
double y,
double w,
double h)
測試 Shape 內部是否完全包含指定矩形區域。 |
boolean |
contains(Point2D p)
測試指定的 Point2D 是否在 Shape 的邊界內。 |
boolean |
contains(Rectangle2D r)
測試 Shape 內部是否完全包含指定的 Rectangle2D 。 |
Area |
createTransformedArea(AffineTransform t)
創建一個新 Area 物件,使它與由指定 AffineTransform 變換的 Area 套件含相同的幾何形狀。 |
boolean |
equals(Area other)
測試兩個 Area 物件的幾何形狀是否相等。 |
void |
exclusiveOr(Area rhs)
將此 Area 的形狀設置為其當前形狀與指定 Area 形狀的組合區域,並減去其交集。 |
Rectangle |
getBounds()
返回完全包圍此 Area 的邊界 Rectangle 。 |
Rectangle2D |
getBounds2D()
返回完全包圍此 Area 的高精度邊界 Rectangle2D 。 |
PathIterator |
getPathIterator(AffineTransform at)
為此 Area 物件的輪廓創建一個 PathIterator 。 |
PathIterator |
getPathIterator(AffineTransform at,
double flatness)
為此 Area 物件的變平輪廓創建 PathIterator 。 |
void |
intersect(Area rhs)
將此 Area 的形狀設置為其當前形狀與指定 Area 形狀的交集。 |
boolean |
intersects(double x,
double y,
double w,
double h)
測試 Shape 內部是否與指定矩形區域的內部相交。 |
boolean |
intersects(Rectangle2D r)
測試 Shape 內部是否與指定 Rectangle2D 內部相交。 |
boolean |
isEmpty()
測試此 Area 物件是否包括其他區域。 |
boolean |
isPolygonal()
測試此 Area 是否完全由直邊多邊形組成。 |
boolean |
isRectangular()
測試此 Area 的形狀是否為矩形。 |
boolean |
isSingular()
測試此 Area 是否由單個封閉子路徑組成。 |
void |
reset()
從此 Area 刪除所有幾何形狀,將其恢復為空區域。 |
void |
subtract(Area rhs)
從此 Area 的形狀中減去指定 Area 的形狀。 |
void |
transform(AffineTransform t)
使用指定的 AffineTransform 變換此 Area 的幾何形狀。 |
從類別 java.lang.Object 繼承的方法 |
---|
equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
建構子詳細資訊 |
---|
public Area()
public Area(Shape s)
Area
類別可以根據指定的 Shape
物件創建區域幾何形狀。如果 Shape
還不是封閉的,則顯式地封閉幾何形狀。由 Shape
的幾何形狀指定的填充規則(奇偶或纏繞)用於確定得到的封閉區域。
s
- 據以建構區域的 Shape
NullPointerException
- 如果 s
為 null方法詳細資訊 |
---|
public void add(Area rhs)
Area
的形狀添加到此 Area
的形狀中。得到的 Area
形狀將包括兩個形狀的並集,或者包含此 Area
或指定 Area
中的所有區域。
//Example: Area a1 = new Area([triangle 0,0 => 8,0 => 0,8]); Area a2 = new Area([triangle 0,0 => 8,0 => 8,8]); a1.add(a2); a1(before) + a2 = a1(after) ################ ################ ################ ############## ############## ################ ############ ############ ################ ########## ########## ################ ######## ######## ################ ###### ###### ###### ###### #### #### #### #### ## ## ## ##
rhs
- 將添加到當前形狀的 Area
NullPointerException
- 如果 rhs
為 nullpublic void subtract(Area rhs)
Area
的形狀中減去指定 Area
的形狀。得到的 Area
形狀將包括那些僅包括那些包含在此 Area
且不包含在指定 Area
中的區域。
//Example: Area a1 = new Area([triangle 0,0 => 8,0 => 0,8]); Area a2 = new Area([triangle 0,0 => 8,0 => 8,8]); a1.subtract(a2); a1(before) - a2 = a1(after) ################ ################ ############## ############## ## ############ ############ #### ########## ########## ###### ######## ######## ######## ###### ###### ###### #### #### #### ## ## ##
rhs
- 將從當前形狀中刪除的 Area
NullPointerException
- 如果 rhs
為 nullpublic void intersect(Area rhs)
Area
的形狀設置為其當前形狀與指定 Area
形狀的交集。得到的 Area
形狀將僅包括那些既包含在此 Area
中也包含在指定 Area
中的區域。
//Example: Area a1 = new Area([triangle 0,0 => 8,0 => 0,8]); Area a2 = new Area([triangle 0,0 => 8,0 => 8,8]); a1.intersect(a2); a1(before) intersect a2 = a1(after) ################ ################ ################ ############## ############## ############ ############ ############ ######## ########## ########## #### ######## ######## ###### ###### #### #### ## ##
rhs
- 將與此 Area
相交的 Area
NullPointerException
- 如果 rhs
為 nullpublic void exclusiveOr(Area rhs)
Area
的形狀設置為其當前形狀與指定 Area
形狀的組合區域,並減去其交集。得到的 Area
形狀將僅包括那些包含在此 Area
或指定 Area
中、但不同時出現在兩者中的區域。
//Example: Area a1 = new Area([triangle 0,0 => 8,0 => 0,8]); Area a2 = new Area([triangle 0,0 => 8,0 => 8,8]); a1.exclusiveOr(a2); a1(before) xor a2 = a1(after) ################ ################ ############## ############## ## ## ############ ############ #### #### ########## ########## ###### ###### ######## ######## ################ ###### ###### ###### ###### #### #### #### #### ## ## ## ##
rhs
- 將與此 Area
進行異或運算的 Area
。
NullPointerException
- 如果 rhs
為 nullpublic void reset()
Area
刪除所有幾何形狀,將其恢復為空區域。
public boolean isEmpty()
Area
物件是否包括其他區域。
Area
物件表示空區域,則返回 true
;否則返回 false
。public boolean isPolygonal()
Area
是否完全由直邊多邊形組成。
Area
全部由線段組成,則返回 true
;否則返回 false
。public boolean isRectangular()
Area
的形狀是否為矩形。
Area
的幾何形狀是矩形,則返回 true
;否則返回 false
。public boolean isSingular()
Area
是否由單個封閉子路徑組成。如果路徑包含 0 個或 1 個子路徑,則此方法返回 true
;如果路徑包含 1 個以上的子路徑,則返回 false
。子路徑是根據路徑中出現的 SEG_MOVETO
段數來計算的。
Area
由單個基本幾何形狀組成,則返回 true
;否則返回 false
。public Rectangle2D getBounds2D()
Area
的高精度邊界 Rectangle2D
。
Area 類別將試圖為 Shape 返回可能的最緊密的邊界框。不要填充邊界框以包含 Shape 輪廓上的曲線控制點,而應該讓邊界框緊密地適合輪廓本身的實際幾何形狀。
Shape
中的 getBounds2D
Area
的邊界 Rectangle2D
。Shape.getBounds()
public Rectangle getBounds()
Area
的邊界 Rectangle
。
Area 類別將試圖為 Shape 返回可能的最緊密的邊界框。不要填充邊界框以包含 Shape 輪廓上的曲線控制點,而應該讓邊界框緊密地適合輪廓本身的實際幾何形狀。因為返回的物件使用整數表示邊界框,所以邊界框只能是圍繞 Shape 幾何形狀盡可能緊密的整數坐標。
Shape
中的 getBounds
Area
的邊界 Rectangle
。Shape.getBounds2D()
public Object clone()
Area
物件的精確副本。
Object
中的 clone
Cloneable
public boolean equals(Area other)
Area
物件的幾何形狀是否相等。如果參數為 null,則此方法將返回 false。
other
- 將與此 Area
比較的 Area
true
;否則返回 false
。public void transform(AffineTransform t)
AffineTransform
變換此 Area
的幾何形狀。適當地變換幾何形狀,它將永久更改由此物件定義的封閉區域。
t
- 用於變換區域的變換
NullPointerException
- 如果 t
為 nullpublic Area createTransformedArea(AffineTransform t)
Area
物件,使它與由指定 AffineTransform
變換的 Area
套件含相同的幾何形狀。此 Area
物件不變。
t
- 用於變換新 Area
的指定 AffineTransform
Area
物件。
NullPointerException
- 如果 t
為 nullpublic boolean contains(double x, double y)
Shape
的邊界內。
Shape
中的 contains
x
- 要測試的指定的 X 坐標y
- 要測試的指定的 Y 坐標
Shape
邊界內,則返回 true
;否則返回 false
。public boolean contains(Point2D p)
Point2D
是否在 Shape
的邊界內。
Shape
中的 contains
p
- 要測試的指定的 Point2D
Point2D
在 Shape
邊界內,則返回 true
;否則返回 false
。public 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
物件更為準確地執行幾何計算,因此可以使用該類別。
Shape
中的 contains
x
- 指定矩形區域左上角的 X 坐標y
- 指定矩形區域左上角的 Y 坐標w
- 指定矩形區域的寬度h
- 指定矩形區域的高度
Shape
內部完全包含指定矩形區域,則返回 true
;否則,如果 Shape
套件含矩形區域、intersects
方法返回 true
且執行包含計算代價太高,則返回 false
。Area
,
Shape.intersects(double, double, double, double)
public boolean contains(Rectangle2D r)
Shape
內部是否完全包含指定的 Rectangle2D
。在下列情況下,Shape.contains()
方法允許 Shape
實作謹慎地返回 false
:
intersect
方法返回 true
並且
Shape
是否完全包含 Rectangle2D
的代價太高。
Shape
,即使 Shape
套件含 Rectangle2D
,此方法也可能返回 false
。如果需要更精確的答案,由於 Area
類別比大多數 Shape
物件更為準確地執行幾何計算,因此可以使用該類別。
Shape
中的 contains
r
- 指定的 Rectangle2D
Shape
內部完全包含 Rectangle2D
,則返回 true
;否則,如果 Shape
套件含 Rectangle2D
、intersects
方法返回 true
且執行包含計算代價太高,則返回 false
。Shape.contains(double, double, double, double)
public boolean intersects(double x, double y, double w, double h)
Shape
內部是否與指定矩形區域的內部相交。如果任何一個點既包含在 Shape
內,又包含在指定矩形區域內,則認為矩形區域與 Shape
相交。
在下列情況下,Shape.intersects()
方法允許 Shape
實作謹慎地返回 true
:
Shape
相交的可能性很大,但是
Shape
,即使矩形區域沒有與該 Shape
相交,此方法也可能返回 true
。如果需要更精確的答案,由於 Area
類別比大多數 Shape
物件更為準確地計算幾何相交,因此可以使用該類別。
Shape
中的 intersects
x
- 指定矩形區域左上角的 X 坐標y
- 指定矩形區域左上角的 Y 坐標w
- 指定矩形區域的寬度h
- 指定矩形區域的高度
Shape
的內部區域與矩形的內部區域相交,或者相交的可能性很大且執行計算的代價太高,則返回 true
;否則返回 false
。Area
public boolean intersects(Rectangle2D r)
Shape
內部是否與指定 Rectangle2D
內部相交。在下列情況下,Shape.intersects()
方法允許 Shape
實作謹慎地返回 true
:
Rectangle2D
與 Shape
相交的可能性很大,但是
Shape
,即使 Rectangle2D
沒有與該 Shape
相交,此方法也可能返回 true
。如果需要更精確的答案,由於 Area
類別比大多數 Shape
物件更為準確地計算幾何相交,因此可以使用該類別。
Shape
中的 intersects
r
- 指定的 Rectangle2D
Shape
內部與指定 Rectangle2D
內部相交,或者相交的可能性很大且執行計算的代價太高,則返回 true
;否則返回 false
。Shape.intersects(double, double, double, double)
public PathIterator getPathIterator(AffineTransform at)
Area
物件的輪廓創建一個 PathIterator
。此 Area
物件不變。
Shape
中的 getPathIterator
at
- 一個可選的 AffineTransform
,應用於在迭代中返回的坐標;如果需要未變換的坐標,則為 null
Area
輪廓幾何形狀的 PathIterator
物件,一次一段。public PathIterator getPathIterator(AffineTransform at, double flatness)
Area
物件的變平輪廓創建 PathIterator
。迭代器只返回 SEG_MOVETO、SEG_LINETO 和 SEG_CLOSE 點型別所表示的非曲線路徑段。此 Area
物件不變。
Shape
中的 getPathIterator
at
- 一個可選的 AffineTransform
,應用於在迭代中返回的坐標;如果需要未變換的坐標,則為 null
flatness
- 在使用連接端點的直線取代分段曲線之前,給定曲線的控制點可以從共線變化的最大值
Area
輪廓幾何形狀的 PathIterator
物件,一次一段。
|
JavaTM 2 Platform Standard Ed. 6 |
|||||||||
上一個類別 下一個類別 | 框架 無框架 | |||||||||
摘要: 巢狀 | 欄位 | 建構子 | 方法 | 詳細資訊: 欄位 | 建構子 | 方法 |
版權所有 2008 Sun Microsystems, Inc. 保留所有權利。請遵守GNU General Public License, version 2 only。