public interface Shape
Shape インタフェースは、何らかの形式の幾何学的な形状を表すオブジェクトの定義を提供します。Shape は、Shape の輪郭と、輪郭がどのように 2D 平面を内部領域の点と外部領域の点とに分割するかを決める規則を表すことができる PathIterator オブジェクトによって記述されます。各 Shape オブジェクトは、幾何学的図形のバウンディングボックスを取得したり、点または矩形の一部または全体が Shape の内部領域内にあるかどうかを判定したり、Shape の輪郭の軌道輪郭線を記述する PathIterator オブジェクトを取得したりするためのコールバックを提供します。
内側の定義:点は、次のような場合にだけ Shape の内側にあると見なされます。
Shape の境界の完全に内側にある場合
Shape の境界線上に位置し、かつ、その点に隣接する、X 軸方向のプラス側にあるスペースが完全に境界内に収まる場合
Y 軸方向のプラス側にあるスペースが境界内に収まる場合。
contains と intersects メソッドは、Shape の内部が塗りつぶされているかのように閉じられた領域と見なします。つまり、形状が矩形を含んでいるか、矩形と交差しているか、あるいは形状が点を含んでいるかを判定するために、これらのメソッドが、閉じられていない形状を閉じられているものと暗黙的に見なすことを意味します。
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)
|
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 の内部と交差しているかどうかをテストします。 |
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。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 のインスタンス。getBounds()boolean contains(double x,
double y)
Shape の境界の内側にあるかどうかをテストします。x - テストされる指定された X 座標y - テストされる指定された Y 座標Shape 境界の内側にある場合は true、それ以外の場合は false。boolean contains(Point2D p)
p - テストされる指定された Point2DPoint2D が Shape の境界の内側にある場合は true、それ以外の場合は false。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。Areaboolean intersects(Rectangle2D r)
Shape の内部が指定された Rectangle2D の内部と交差しているかどうかをテストします。Shape.intersects() メソッドを使用すると、次のような場合に、Shape 実装は内部的に true を返すことができます。
Rectangle2D と Shape が交差している可能性が高いが、
Shapes によっては、Rectangle2D が Shape と交差していない場合でもこのメソッドが true を返すことがあります。Area クラスは、ほとんどの Shape オブジェクトより正確な、幾何学的な共通部分の計算を実行するため、より的確な答えが必要な場合に使用できます。r - 指定された Rectangle2DShape の内部と指定された Rectangle2D の内部が交差しているか、またはどちらも交差している可能性が高いが、負荷が大きすぎて共通部分の計算を実行できない場合は true、それ以外の場合は false。intersects(double, double, double, double)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。Area, intersects(double, double, double, double)boolean contains(Rectangle2D r)
Shape の内部に、指定された Rectangle2D が完全に含まれるかどうかをテストします。Shape.contains() メソッドを使用すると、次のような場合に、Shape 実装は内部的に false を返すことができます。
intersect メソッドが true を返し、かつ
Shape に Rectangle2D が完全に含まれるかどうかを判定するための計算の負荷が非常に大きい。
Shapes によっては、Shape に Rectangle2D が含まれている場合でもこのメソッドが false を返すことがあります。Area クラスは、ほとんどの Shape オブジェクトより正確な幾何学的計算を実行するため、より的確な答えが必要な場合に使用できます。r - 指定された Rectangle2DShape の内部に Rectangle2D が完全に含まれる場合は true、それ以外の場合、または Shape に Rectangle2D が含まれ、intersects メソッドが true を返し、さらに負荷が大きすぎて包含の計算を実行できない場合は false。contains(double, double, double, double)PathIterator getPathIterator(AffineTransform at)
Shape の境界に沿って反復し、Shape の輪郭の幾何学的図形へのアクセスを提供するイテレータオブジェクトを返します。オプションの AffineTransform が指定されると、反復処理で返される座標がそれに応じて変換されます。
このメソッドを呼び出すたびに、同時に使用されているほかのすべての PathIterator オブジェクトとは無関係に、Shape オブジェクトの幾何学的図形をトラバースする新しい PathIterator オブジェクトが返されます。
Shape インタフェースを実装するオブジェクトにより、進行中の反復が、このような反復中に発生する可能性のある元のオブジェクトの幾何学的図形へのどのような変更からも切り離されることを推奨しますが、これは保証されません。
at - 反復処理で返されるときに座標に適用されるオプションの AffineTransform、または変換されていない座標が必要な場合は nullShape の幾何学的図形を独立してトラバースする新しい PathIterator オブジェクト。PathIterator getPathIterator(AffineTransform at, double flatness)
Shape の境界に沿って反復し、Shape の輪郭の幾何学的図形の平坦化されたビューへのアクセスを提供するイテレータオブジェクトを返します。
イテレータが返すのは、ポイント型 SEG_MOVETO、SEG_LINETO、および SEG_CLOSE だけです。
オプションの AffineTransform が指定されると、反復処理で返される座標がそれに応じて変換されます。
曲線セグメントの分割の量は、平坦化されない変換を受けた曲線上の点が、返される平坦化されたパスセグメントからもっとも離れる距離を指定する flatness パラメータによって制御されます。平坦化された輪郭線の精度に対して予告なしに制限が加えられることがあり、この場合、非常に小さな平坦化パラメータが大きな値として扱われることがあります。この制限は、使用される特定の実装によって決まります。
このメソッドを呼び出すたびに、同時に使用されているほかのすべての PathIterator オブジェクトとは無関係に、Shape オブジェクトの幾何学的図形をトラバースする新しい PathIterator オブジェクトが返されます。
Shape インタフェースを実装するオブジェクトにより、進行中の反復が、このような反復中に発生する可能性のある元のオブジェクトの幾何学的図形へのどのような変更からも切り離されることを推奨しますが、これは保証されません。
at - 反復処理で返されるときに座標に適用されるオプションの AffineTransform、または変換されていない座標が必要な場合は nullflatness - 曲線セグメントを近似するために使用されるラインセグメントが、元の曲線上の任意の点から離れることができる最大の距離Shape の幾何学的図形の平坦化されたビューを独立してトラバースする新しい PathIterator。 バグまたは機能を送信
詳細な API リファレンスおよび開発者ドキュメントについては、Java SE のドキュメントを参照してください。そのドキュメントには、概念的な概要、用語の定義、回避方法、有効なコード例などの、開発者を対象にしたより詳細な説明が含まれています。
Copyright © 1993, 2013, Oracle and/or its affiliates. All rights reserved.