JavaTM 2 Platform
Standard Ed. 6

java.awt.geom
類別 Area

java.lang.Object
  繼承者 java.awt.geom.Area
所有已實作的介面:
Shape, Cloneable

public class Area
extends Object
implements Shape, Cloneable

Area 物件存儲和操作 2 維空間封閉區域的與解析無關的描述。在與其他 Area 物件合併時,Area 物件可以被變換,並可執行各種建構區域幾何形狀 (Constructive Area Geometry,CAG) 操作。CAG 操作包括對區域進行異或。有關各種操作的範例,請參閱連接的方法文檔。

Area 類別實作了 Shape 介面,並提供對所有目標測試和路徑迭代設施的完全支持,但 Area 在許多方面比一般化的路徑更具體:

在使用 Area 時,一些並不總是很明顯但值得注意的問題包括:

從以下版本開始:
1.2

建構子摘要
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
 

建構子詳細資訊

Area

public Area()
創建空區域的預設建構子。

從以下版本開始:
1.2

Area

public Area(Shape s)
Area 類別可以根據指定的 Shape 物件創建區域幾何形狀。如果 Shape 還不是封閉的,則顯式地封閉幾何形狀。由 Shape 的幾何形狀指定的填充規則(奇偶或纏繞)用於確定得到的封閉區域。

參數:
s - 據以建構區域的 Shape
拋出:
NullPointerException - 如果 s 為 null
從以下版本開始:
1.2
方法詳細資訊

add

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 為 null
從以下版本開始:
1.2

subtract

public 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 為 null
從以下版本開始:
1.2

intersect

public 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 為 null
從以下版本開始:
1.2

exclusiveOr

public 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 為 null
從以下版本開始:
1.2

reset

public void reset()
從此 Area 刪除所有幾何形狀,將其恢復為空區域。

從以下版本開始:
1.2

isEmpty

public boolean isEmpty()
測試此 Area 物件是否包括其他區域。

返回:
如果此 Area 物件表示空區域,則返回 true;否則返回 false
從以下版本開始:
1.2

isPolygonal

public boolean isPolygonal()
測試此 Area 是否完全由直邊多邊形組成。

返回:
如果此 Area 全部由線段組成,則返回 true;否則返回 false
從以下版本開始:
1.2

isRectangular

public boolean isRectangular()
測試此 Area 的形狀是否為矩形。

返回:
如果此 Area 的幾何形狀是矩形,則返回 true;否則返回 false
從以下版本開始:
1.2

isSingular

public boolean isSingular()
測試此 Area 是否由單個封閉子路徑組成。如果路徑包含 0 個或 1 個子路徑,則此方法返回 true;如果路徑包含 1 個以上的子路徑,則返回 false。子路徑是根據路徑中出現的 SEG_MOVETO 段數來計算的。

返回:
如果 Area 由單個基本幾何形狀組成,則返回 true;否則返回 false
從以下版本開始:
1.2

getBounds2D

public Rectangle2D getBounds2D()
返回完全包圍此 Area 的高精度邊界 Rectangle2D

Area 類別將試圖為 Shape 返回可能的最緊密的邊界框。不要填充邊界框以包含 Shape 輪廓上的曲線控制點,而應該讓邊界框緊密地適合輪廓本身的實際幾何形狀。

指定者:
介面 Shape 中的 getBounds2D
返回:
Area 的邊界 Rectangle2D
從以下版本開始:
1.2
另請參見:
Shape.getBounds()

getBounds

public Rectangle getBounds()
返回完全包圍此 Area 的邊界 Rectangle

Area 類別將試圖為 Shape 返回可能的最緊密的邊界框。不要填充邊界框以包含 Shape 輪廓上的曲線控制點,而應該讓邊界框緊密地適合輪廓本身的實際幾何形狀。因為返回的物件使用整數表示邊界框,所以邊界框只能是圍繞 Shape 幾何形狀盡可能緊密的整數坐標。

指定者:
介面 Shape 中的 getBounds
返回:
Area 的邊界 Rectangle
從以下版本開始:
1.2
另請參見:
Shape.getBounds2D()

clone

public Object clone()
返回此 Area 物件的精確副本。

覆寫:
類別 Object 中的 clone
返回:
創建的副本物件
從以下版本開始:
1.2
另請參見:
Cloneable

equals

public boolean equals(Area other)
測試兩個 Area 物件的幾何形狀是否相等。如果參數為 null,則此方法將返回 false。

參數:
other - 將與此 Area 比較的 Area
返回:
如果兩個幾何形狀相等,則返回 true;否則返回 false
從以下版本開始:
1.2

transform

public void transform(AffineTransform t)
使用指定的 AffineTransform 變換此 Area 的幾何形狀。適當地變換幾何形狀,它將永久更改由此物件定義的封閉區域。

參數:
t - 用於變換區域的變換
拋出:
NullPointerException - 如果 t 為 null
從以下版本開始:
1.2

createTransformedArea

public Area createTransformedArea(AffineTransform t)
創建一個新 Area 物件,使它與由指定 AffineTransform 變換的 Area 套件含相同的幾何形狀。此 Area 物件不變。

參數:
t - 用於變換新 Area 的指定 AffineTransform
返回:
表示已變換的幾何形狀的新 Area 物件。
拋出:
NullPointerException - 如果 t 為 null
從以下版本開始:
1.2

contains

public boolean contains(double x,
                        double y)
測試指定坐標是否在 Shape 的邊界內。

指定者:
介面 Shape 中的 contains
參數:
x - 要測試的指定的 X 坐標
y - 要測試的指定的 Y 坐標
返回:
如果指定坐標在 Shape 邊界內,則返回 true;否則返回 false
從以下版本開始:
1.2

contains

public boolean contains(Point2D p)
測試指定的 Point2D 是否在 Shape 的邊界內。

指定者:
介面 Shape 中的 contains
參數:
p - 要測試的指定的 Point2D
返回:
如果指定的 Point2DShape 邊界內,則返回 true;否則返回 false
從以下版本開始:
1.2

contains

public boolean contains(double x,
                        double y,
                        double w,
                        double h)
測試 Shape 內部是否完全包含指定矩形區域。矩形區域內的所有坐標都必須位於 Shape 中,才可以認為整個矩形區域包含在 Shape中。

在下列情況下,Shape.contains() 方法允許 Shape 實作謹慎地返回 false

這意味著對於某些 Shape,即使 Shape 套件含矩形區域,此方法也可能返回 false。如果需要更精確的答案,由於 Area 類別比大多數 Shape 物件更為準確地執行幾何計算,因此可以使用該類別。

指定者:
介面 Shape 中的 contains
參數:
x - 指定矩形區域左上角的 X 坐標
y - 指定矩形區域左上角的 Y 坐標
w - 指定矩形區域的寬度
h - 指定矩形區域的高度
返回:
如果 Shape 內部完全包含指定矩形區域,則返回 true;否則,如果 Shape 套件含矩形區域、intersects 方法返回 true 且執行包含計算代價太高,則返回 false
從以下版本開始:
1.2
另請參見:
Area, Shape.intersects(double, double, double, double)

contains

public boolean contains(Rectangle2D r)
測試 Shape 內部是否完全包含指定的 Rectangle2D。在下列情況下,Shape.contains() 方法允許 Shape 實作謹慎地返回 false 這意味著對於某些 Shape,即使 Shape 套件含 Rectangle2D,此方法也可能返回 false。如果需要更精確的答案,由於 Area 類別比大多數 Shape 物件更為準確地執行幾何計算,因此可以使用該類別。

指定者:
介面 Shape 中的 contains
參數:
r - 指定的 Rectangle2D
返回:
如果 Shape 內部完全包含 Rectangle2D,則返回 true;否則,如果 Shape 套件含 Rectangle2Dintersects 方法返回 true 且執行包含計算代價太高,則返回 false
從以下版本開始:
1.2
另請參見:
Shape.contains(double, double, double, double)

intersects

public boolean intersects(double x,
                          double y,
                          double w,
                          double h)
測試 Shape 內部是否與指定矩形區域的內部相交。如果任何一個點既包含在 Shape 內,又包含在指定矩形區域內,則認為矩形區域與 Shape 相交。

在下列情況下,Shape.intersects() 方法允許 Shape 實作謹慎地返回 true

這意味著對於某些 Shape,即使矩形區域沒有與該 Shape 相交,此方法也可能返回 true。如果需要更精確的答案,由於 Area 類別比大多數 Shape 物件更為準確地計算幾何相交,因此可以使用該類別。

指定者:
介面 Shape 中的 intersects
參數:
x - 指定矩形區域左上角的 X 坐標
y - 指定矩形區域左上角的 Y 坐標
w - 指定矩形區域的寬度
h - 指定矩形區域的高度
返回:
如果 Shape 的內部區域與矩形的內部區域相交,或者相交的可能性很大且執行計算的代價太高,則返回 true;否則返回 false
從以下版本開始:
1.2
另請參見:
Area

intersects

public boolean intersects(Rectangle2D r)
測試 Shape 內部是否與指定 Rectangle2D 內部相交。在下列情況下,Shape.intersects() 方法允許 Shape 實作謹慎地返回 true 這意味著對於某些 Shape,即使 Rectangle2D 沒有與該 Shape 相交,此方法也可能返回 true。如果需要更精確的答案,由於 Area 類別比大多數 Shape 物件更為準確地計算幾何相交,因此可以使用該類別。

指定者:
介面 Shape 中的 intersects
參數:
r - 指定的 Rectangle2D
返回:
如果 Shape 內部與指定 Rectangle2D 內部相交,或者相交的可能性很大且執行計算的代價太高,則返回 true;否則返回 false
從以下版本開始:
1.2
另請參見:
Shape.intersects(double, double, double, double)

getPathIterator

public PathIterator getPathIterator(AffineTransform at)
為此 Area 物件的輪廓創建一個 PathIterator。此 Area 物件不變。

指定者:
介面 Shape 中的 getPathIterator
參數:
at - 一個可選的 AffineTransform,應用於在迭代中返回的坐標;如果需要未變換的坐標,則為 null
返回:
返回此 Area 輪廓幾何形狀的 PathIterator 物件,一次一段。
從以下版本開始:
1.2

getPathIterator

public PathIterator getPathIterator(AffineTransform at,
                                    double flatness)
為此 Area 物件的變平輪廓創建 PathIterator。迭代器只返回 SEG_MOVETO、SEG_LINETO 和 SEG_CLOSE 點型別所表示的非曲線路徑段。此 Area 物件不變。

指定者:
介面 Shape 中的 getPathIterator
參數:
at - 一個可選的 AffineTransform,應用於在迭代中返回的坐標;如果需要未變換的坐標,則為 null
flatness - 在使用連接端點的直線取代分段曲線之前,給定曲線的控制點可以從共線變化的最大值
返回:
返回此 Area 輪廓幾何形狀的 PathIterator 物件,一次一段。
從以下版本開始:
1.2

JavaTM 2 Platform
Standard Ed. 6

提交錯誤或意見

版權所有 2008 Sun Microsystems, Inc. 保留所有權利。請遵守GNU General Public License, version 2 only