- 既知のすべての実装クラス:
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
Shape
インタフェースは、何らかの形式の幾何学的な形状を表すオブジェクトの定義を提供します。 Shape
は、Shape
の輪郭と、輪郭がどのように2D平面を内部領域の点と外部領域の点とに分割するかを決めるルールを表すことができるPathIterator
オブジェクトによって記述されます。 各Shape
オブジェクトは、幾何学的図形のバウンディング・ボックスを取得したり、点または矩形の一部または全体がShape
の内部領域内にあるかどうかを判定したり、Shape
の輪郭の軌道輪郭線を記述するPathIterator
オブジェクトを取得したりするためのコールバックを提供します。
内側の定義:点は、次のような場合にだけShape
の内側にあると見なされます。
-
Shape
の境界の完全に内側にある場合 -
Shape
の境界線上に位置し、かつ、その点に隣接する、X
軸方向のプラス側にあるスペースが完全に境界内に収まる場合 -
水平方向の境界セグメント上に位置し、かつ、その点に隣接する、
Y
軸方向のプラス側にあるスペースが境界内に収まる場合。
contains
とintersects
メソッドは、Shape
の内部が塗りつぶされているかのように閉じられた領域と見なします。 つまり、形状が矩形を含んでいるか、矩形と交差しているか、あるいは形状が点を含んでいるかを判定するために、これらのメソッドが、閉じられていない形状を閉じられているものと暗黙的に見なすことを意味します。
- 導入されたバージョン:
- 1.2
- 関連項目:
-
メソッドのサマリー
修飾子と型メソッド説明boolean
contains
(double x, double y) 指定された座標が、内側の定義によって記述されたShape
の境界の内側にあるかどうかをテストします。boolean
contains
(double x, double y, double w, double h) Shape
の内部に、指定された矩形領域が完全に含まれるかどうかをテストします。boolean
boolean
Shape
の内部に、指定されたRectangle2D
が完全に含まれるかどうかをテストします。Shape
を完全に囲む整数のRectangle
を返します。高精度で、かつgetBounds
メソッドより正確なShape
のバウンディング・ボックスを返します。Shape
の境界に沿って反復し、Shape
の輪郭の幾何学的図形へのアクセスを提供するイテレータ・オブジェクトを返します。getPathIterator
(AffineTransform at, double flatness) Shape
の境界に沿って反復し、Shape
の輪郭の幾何学的図形の平坦化されたビューへのアクセスを提供するイテレータ・オブジェクトを返します。boolean
intersects
(double x, double y, double w, double h) Shape
の内部が指定された矩形領域の内部と交差しているかどうかをテストします。boolean
Shape
の内部が指定されたRectangle2D
の内部と交差しているかどうかをテストします。
-
メソッドの詳細
-
getBounds
Rectangle getBounds()Shape
を完全に囲む整数のRectangle
を返します。 返されたRectangle
がShape
を囲む最小のバウンディング・ボックスであるとは限りません。示されたRectangle
内にShape
が完全に収まるというだけです。 また、Shape
が整数型の制限範囲を超える場合、返されたRectangle
はShape
を完全に囲むことができないこともあります。 通常は、getBounds2D
メソッドの方が、表現の自由度が高いために、比較的ぴったりしたバウンディング・ボックスを返します。内側の定義によって、
shape
の定義する輪郭上の点が、返されたbounds
オブジェクトに含まれていると見なされない状況が発生する場合があります。ただし、これは、これらの点が元のshape
にも含まれていないと見なされる場合のみです。point
がcontains(point)
メソッドに従ってshape
の内側にある場合は、bounds
のcontains(point)
メソッドに従って、返されたRectangle
境界オブジェクトの内側にある必要があります。 具体的には、次のようになります。shape.contains(x,y)
にはbounds.contains(x,y)
が必要point
がshape
の内側にない場合は、引き続きbounds
オブジェクトに含まれている可能性があります。bounds.contains(x,y)
はshape.contains(x,y)
を示さない- 戻り値:
Shape
を完全に囲む整数型のRectangle
。- 導入されたバージョン:
- 1.2
- 関連項目:
-
getBounds2D
Rectangle2D getBounds2D()高精度で、かつgetBounds
メソッドより正確なShape
のバウンディング・ボックスを返します。 返されたRectangle2D
が、Shape
を囲む最小のバウンディング・ボックスであるという保証はありません。Shape
が、示されたRectangle2D
内に完全に含まれているだけです。 戻り値を、倍精度値を使用して寸法を格納するRectangle2D
のインスタンスにすることができるため、このメソッドによって返されたバウンディング・ボックスは通常、getBounds
メソッドによって返されたものより厳密であり、オーバーフローの問題のために失敗することはありません。内側の定義によって、
shape
の定義する輪郭上の点が、返されたbounds
オブジェクトに含まれていると見なされない状況が発生する場合があります。ただし、これは、これらの点が元のshape
にも含まれていないと見なされる場合のみです。point
がcontains(point)
メソッドに従ってshape
の内側にある場合は、bounds
のcontains(point)
メソッドに従って、返されたRectangle2D
境界オブジェクトの内側にある必要があります。 具体的には、次のようになります。shape.contains(p)
にはbounds.contains(p)
が必要point
がshape
の内側にない場合は、引き続きbounds
オブジェクトに含まれている可能性があります。bounds.contains(p)
はshape.contains(p)
を示さない- 戻り値:
Shape
の高精度のバウンディング・ボックスであるRectangle2D
のインスタンス。- 導入されたバージョン:
- 1.2
- 関連項目:
-
contains
boolean contains(double x, double y) 指定された座標が、内側の定義によって記述されたShape
の境界の内側にあるかどうかをテストします。- パラメータ:
x
- テストされる指定されたX座標y
- テストされる指定されたY座標- 戻り値:
- 指定された座標が
Shape
境界の内側にある場合はtrue
、それ以外の場合はfalse
。 - 導入されたバージョン:
- 1.2
-
contains
boolean contains(Point2D p) - パラメータ:
p
- テストされる指定されたPoint2D
- 戻り値:
- 指定された
Point2D
がShape
の境界の内側にある場合はtrue
、それ以外の場合はfalse
。 - 導入されたバージョン:
- 1.2
-
intersects
boolean intersects(double x, double y, double w, double h) Shape
の内部が指定された矩形領域の内部と交差しているかどうかをテストします。Shape
の内部と指定された矩形領域の両方に含まれている点が存在する場合、その矩形領域はShape
と交差していると見なされます。Shape.intersects()
メソッドを使用すると、次のような場合に、Shape
実装は内部的にtrue
を返すことができます。-
矩形領域と
Shape
が交差している可能性が高いが、 - この共通部分を正確に判断する計算の負荷がかなり大きい。
Shapes
によっては、矩形領域がShape
と交差していない場合でもこのメソッドがtrue
を返すことがあります。Area
クラスは、ほとんどのShape
オブジェクトより正確な、幾何学的な共通部分の計算を実行するため、より的確な答えが必要な場合に使用できます。- パラメータ:
x
- 指定された矩形領域の左上隅のX座標y
- 指定された矩形領域の左上隅のY座標w
- 指定された矩形領域の幅h
- 指定された矩形領域の高さ- 戻り値:
Shape
の内部と矩形領域の内部が交差しているか、またはどちらも交差している可能性が高いが、負荷が大きすぎて共通部分の計算を実行できない場合はtrue
、それ以外の場合はfalse
。- 導入されたバージョン:
- 1.2
- 関連項目:
-
矩形領域と
-
intersects
boolean intersects(Rectangle2D r) Shape
の内部が指定されたRectangle2D
の内部と交差しているかどうかをテストします。Shape.intersects()
メソッドを使用すると、次のような場合に、Shape
実装は内部的にtrue
を返すことができます。-
Rectangle2D
とShape
が交差している可能性が高いが、 - この共通部分を正確に判断する計算の負荷がかなり大きい。
Shapes
によっては、Rectangle2D
がShape
と交差していない場合でもこのメソッドがtrue
を返すことがあります。Area
クラスは、ほとんどのShape
オブジェクトより正確な、幾何学的な共通部分の計算を実行するため、より的確な答えが必要な場合に使用できます。- パラメータ:
r
- 指定されたRectangle2D
- 戻り値:
Shape
の内部と指定されたRectangle2D
の内部が交差しているか、またはどちらも交差している可能性が高いが、負荷が大きすぎて共通部分の計算を実行できない場合はtrue
、それ以外の場合はfalse
。- 導入されたバージョン:
- 1.2
- 関連項目:
-
-
contains
boolean contains(double x, double y, double w, double h) Shape
の内部に、指定された矩形領域が完全に含まれるかどうかをテストします。 矩形領域全体がShape
内に含まれていると見なされるには、矩形領域の内側にあるすべての座標がShape
内にある必要があります。Shape.contains()
メソッドを使用すると、次のような場合に、Shape
実装は内部的にfalse
を返すことができます。-
intersect
メソッドがtrue
を返し、かつ -
Shape
に矩形領域が完全に含まれるかどうかを判定するための計算の負荷が非常に大きい。
Shapes
によっては、Shape
に矩形領域が含まれている場合でもこのメソッドがfalse
を返すことがあります。Area
クラスは、ほとんどのShape
オブジェクトより正確な幾何学的計算を実行するため、より的確な答えが必要な場合に使用できます。- パラメータ:
x
- 指定された矩形領域の左上隅のX座標y
- 指定された矩形領域の左上隅のY座標w
- 指定された矩形領域の幅h
- 指定された矩形領域の高さ- 戻り値:
Shape
の内部に、指定された矩形領域が完全に含まれる場合はtrue
、それ以外の場合、またはShape
に矩形領域が含まれ、intersects
メソッドがtrue
を返し、さらに負荷が大きすぎて包含の計算を実行できない場合はfalse
。- 導入されたバージョン:
- 1.2
- 関連項目:
-
-
contains
boolean contains(Rectangle2D r) Shape
の内部に、指定されたRectangle2D
が完全に含まれるかどうかをテストします。Shape.contains()
メソッドを使用すると、次のような場合に、Shape
実装は内部的にfalse
を返すことができます。-
intersect
メソッドがtrue
を返し、かつ -
Shape
にRectangle2D
が完全に含まれるかどうかを判定するための計算の負荷が非常に大きい。
Shapes
によっては、Shape
にRectangle2D
が含まれている場合でもこのメソッドがfalse
を返すことがあります。Area
クラスは、ほとんどのShape
オブジェクトより正確な幾何学的計算を実行するため、より的確な答えが必要な場合に使用できます。- パラメータ:
r
- 指定されたRectangle2D
- 戻り値:
Shape
の内部にRectangle2D
が完全に含まれる場合はtrue
、それ以外の場合、またはShape
にRectangle2D
が含まれ、intersects
メソッドがtrue
を返し、さらに負荷が大きすぎて包含の計算を実行できない場合はfalse
。- 導入されたバージョン:
- 1.2
- 関連項目:
-
-
getPathIterator
PathIterator getPathIterator(AffineTransform at) Shape
の境界に沿って反復し、Shape
の輪郭の幾何学的図形へのアクセスを提供するイテレータ・オブジェクトを返します。 オプションのAffineTransform
が指定されると、反復処理で返される座標がそれに応じて変換されます。このメソッドを呼び出すたびに、同時に使用されているほかのすべての
PathIterator
オブジェクトとは無関係に、Shape
オブジェクトの幾何学的図形をトラバースする新しい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
パラメータによって制御されます。 平坦化された輪郭線の精度に対して予告なしに制限が加えられることがあり、この場合、非常に小さな平坦化パラメータが大きな値として扱われることがあります。 この制限は、使用される特定の実装によって決まります。このメソッドを呼び出すたびに、同時に使用されているほかのすべての
PathIterator
オブジェクトとは無関係に、Shape
オブジェクトの幾何学的図形をトラバースする新しいPathIterator
オブジェクトが返されます。Shape
インタフェースを実装するオブジェクトにより、進行中の反復が、このような反復中に発生する可能性のある元のオブジェクトの幾何学的図形へのどのような変更からも切り離されることを推奨しますが、これは保証されません。- パラメータ:
at
- 反復処理で返されるときに座標に適用されるオプションのAffineTransform
、または変換されていない座標が必要な場合はnull
flatness
- 曲線セグメントを近似するために使用されるライン・セグメントが、元の曲線上の任意の点から離れることができる最大の距離- 戻り値:
Shape
の幾何学的図形の平坦化されたビューを独立してトラバースする新しいPathIterator
。- 導入されたバージョン:
- 1.2
-