JavaTM 2 Platform
Standard Ed. 6

java.awt
介面 Shape

所有已知實作類別:
Arc2D, Arc2D.Double, Arc2D.Float, Area, BasicTextUI.BasicCaret, CubicCurve2D, CubicCurve2D.Double, CubicCurve2D.Float, DefaultCaret, Ellipse2D, Ellipse2D.Double, Ellipse2D.Float, GeneralPath, Line2D, Line2D.Double, Line2D.Float, Path2D, Path2D.Double, Path2D.Float, Polygon, QuadCurve2D, QuadCurve2D.Double, QuadCurve2D.Float, Rectangle, Rectangle2D, Rectangle2D.Double, Rectangle2D.Float, RectangularShape, RoundRectangle2D, RoundRectangle2D.Double, RoundRectangle2D.Float

public interface Shape

Shape 介面提供了表示一些幾何形狀的物件的定義。Shape 是由 PathIterator 物件描述的,它可以表示 Shape 的輪廓以及確定該輪廓如何將 2D 平面劃分成內點和外點的規則。每個 Shape 物件都提供回調,以獲取幾何形狀的邊框,確定點或矩形是部分還是全部位於 Shape 內部,並檢索一個描述 Shape 輪廓的軌跡路徑的 PathIterator 物件。

內部定義:當且僅當以下條件成立時,才認為某個點位於 Shape 內:

containsintersects 方法將 Shape 內部視為可以填充的封閉區域。這意味著為了確定某個 shape 是否包含矩形或與矩形相交,或者確定某個 shape 是否包含一個點,這些方法將隱式地認為未閉合的 shape 是閉合的。

從以下版本開始:
1.2
另請參見:
PathIterator, AffineTransform, FlatteningPathIterator, GeneralPath

方法摘要
 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
 Rectangle getBounds()
          返回一個完全包圍 Shape 的整型 Rectangle
 Rectangle2D getBounds2D()
          返回一個高精度的、比 getBounds 方法更準確的 Shape 邊界框。
 PathIterator getPathIterator(AffineTransform at)
          返回一個沿著 Shape 邊界迭代並提供對 Shape 輪廓幾何形狀的存取的迭代器物件。
 PathIterator getPathIterator(AffineTransform at, double flatness)
          返回一個沿著 Shape 邊界迭代並提供對 Shape 輪廓幾何形狀的平面視圖存取的迭代器物件。
 boolean intersects(double x, double y, double w, double h)
          測試 Shape 內部是否與指定矩形區域的內部相交。
 boolean intersects(Rectangle2D r)
          測試 Shape 內部是否與指定 Rectangle2D 內部相交。
 

方法詳細資訊

getBounds

Rectangle getBounds()
返回一個完全包圍 Shape 的整型 Rectangle。注意,不保證返回的 Rectangle 是包圍 Shape 的最小邊界框,只保證 Shape 完全位於指示的 Rectangle 中。如果 Shape 超出了整數資料型別的有效範圍,則返回的 Rectangle 也可能不完全包圍 ShapegetBounds2D 方法由於在表示形式上具有更大的靈活性,所以通常返回更緊密的邊界框。

返回:
完全包圍 Shape 的整型 Rectangle
從以下版本開始:
1.2
另請參見:
getBounds2D()

getBounds2D

Rectangle2D getBounds2D()
返回一個高精度的、比 getBounds 方法更準確的 Shape 邊界框。注意,不保證返回的 Rectangle2D 是包圍 Shape 的最小邊界框,只保證 Shape 完全位於指示的 Rectangle2D 中。此方法返回的邊界框通常比 getBounds 方法返回的更緊密,而且永遠不會因為溢位問題而出錯,因為返回值可以是一個使用雙精度值存儲尺寸的 Rectangle2D 實例。

返回:
一個 Rectangle2D 實例,它是 Shape 的高精度邊界框。
從以下版本開始:
1.2
另請參見:
getBounds()

contains

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

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

contains

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

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

intersects

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

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

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

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

intersects

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

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

contains

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

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

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

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

contains

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

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

getPathIterator

PathIterator getPathIterator(AffineTransform at)
返回一個沿著 Shape 邊界迭代並提供對 Shape 輪廓幾何形狀的存取的迭代器物件。如果指定一個可選 AffineTransform,則相應地轉換迭代中返回的坐標。

每次調用此方法都會返回一個最新的、遍歷 Shape 物件幾何形狀的 PathIterator 物件,該物件獨立於其他所有同時使用的 PathIterator 物件。

建議但不保證實作 Shape 介面的物件將進行中的迭代與該迭代期間可能對原始物件幾何形狀所做的任何更改隔離開來。

參數:
at - 一個可選的 AffineTransform,用於在迭代中返回的坐標,如果需要未轉換的坐標,則返回 null
返回:
一個新的、獨立地遍歷 Shape 的幾何形狀的 PathIterator 物件。
從以下版本開始:
1.2

getPathIterator

PathIterator getPathIterator(AffineTransform at,
                             double flatness)
返回一個沿著 Shape 邊界迭代並提供對 Shape 輪廓幾何形狀的平面視圖存取的迭代器物件。

迭代器只返回 SEG_MOVETO、SEG_LINETO 和 SEG_CLOSE 點型別。

如果指定一個可選 AffineTransform,則相應地轉換迭代中返回的坐標。

flatness 參數控制曲線段分段的數量,指定轉換的不平曲線上任一點能夠偏離返回的變平路徑段的最大距離。注意,變平路徑的精度限制可能稍微受到影響,使非常小的變平參數作為較大的值來處理。如果有這樣的限制,那麼該限制是由使用的特定實作定義的。

每次調用此方法都會返回一個最新的、遍歷 Shape 物件幾何形狀的 PathIterator 物件,該物件獨立於其他所有同時使用的 PathIterator 物件。

建議但不保證實作 Shape 介面的物件將進行中的迭代與該迭代期間可能對原始物件幾何形狀所做的任何更改隔離開來。

參數:
at - 一個可選 AffineTransform,用於在迭代中返回的坐標,如果需要未轉換的坐標,則返回 null
flatness - 用來近似曲線段的直線段偏離原始曲線上任一點的最大距離
返回:
一個新的、獨立地遍歷 Shape 幾何形狀的平面視圖的 PathIterator
從以下版本開始:
1.2

JavaTM 2 Platform
Standard Ed. 6

提交錯誤或意見

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