|
JavaTM 2 Platform Std. Ed. v1.4.0 |
||||||||||
前のクラス 次のクラス | フレームあり フレームなし | ||||||||||
概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド |
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)
指定された 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 の内部領域と交差するかどうかを判定します。 |
メソッドの詳細 |
public Rectangle getBounds()
Shape
を完全に囲む整数型の Rectangle
を返します。返された Rectangle
が Shape
を囲む最小のバウンディングボックスであるとは限りません。示された Rectangle
内に Shape
が完全に収まるというだけです。また、Shape
が整数型の制限範囲を超える場合、返された Rectangle
は Shape
を完全に囲むことができないこともあります。通常は、getBounds2D
メソッドの方が、表現の自由度が高いために、比較的ぴったりしたバウンディングボックスを返します。
Shape
を完全に囲む整数型の Rectangle
getBounds2D()
public Rectangle2D getBounds2D()
getBounds
メソッドより精密な、Shape
のバウンディングボックスを返します。返された Rectangle2D
が Shape
を囲む最小のバウンディングボックスであるとは限りません。示された Rectangle2D
内に Shape
が完全に収まるというだけです。戻り値を、倍精度値を使用して寸法を格納する Rectangle2D
のインスタンスにすることもできるため、このメソッドによって返されるバウンディングボックスは、通常、getBounds
メソッドによって返されるバウンディングボックスよりもぴったりしたものになり、オーバーフローのために失敗することはありません。
Shape
の高精度バウンディングボックスを表す Rectangle2D
のインスタンスgetBounds()
public boolean contains(double x, double y)
Shape
の境界内にあるかどうかを判定します。
Shape
の境界内にある場合は true
、そうでない場合は false
public boolean contains(Point2D p)
Point2D
が Shape
の境界内にあるかどうかを判定します。
p
- 指定された Point2D
Point2D
が Shape
の境界内にある場合は true
、そうでない場合は false
public boolean intersects(double x, double y, double w, double h)
Shape
の内部領域が、指定された矩形領域の内部領域と交差するかどうかを判定します。Shape
の内部領域と指定された矩形領域の両方に含まれる点がある場合、矩形領域は Shape
と交差していると見なされます。
このメソッドは、次のような場合でも true
を返すことがあります。
Shape
が重なり合っている可能性がかなり高いが、
Shape
と交差しない場合でも true
を返すことがあります。より正確な結果が必要な場合には、Area
クラスを使用すると、Shape
オブジェクトの幾何学的な共通部分のより精密な計算が行えます。
w
- 指定された矩形領域の幅h
- 指定された矩形領域の高さ
Shape
の内部領域と矩形領域の内部領域が交差する場合、または交差する可能性が高いが、負荷が大き過ぎて共通部分の計算を行えない場合も true
。それ以外の場合は false
Area
public boolean intersects(Rectangle2D r)
Shape
の内部領域が、指定された Rectangle2D
の内部領域と交差するかどうかを判定します。このメソッドは、次のような場合にも true
を返すことがあります。
Rectangle2D
と Shape
が交差する可能性が高いが、
Rectangle2D
が Shape
と交差しない場合でも true
を返すことがあります。
r
- 指定された Rectangle2D
Shape
の内部領域と指定された Rectangle2D
の内部領域が交差する場合、または交差する可能性がかなり高いが、負荷が大き過ぎて共通部分の計算を行えない場合も true
。それ以外の場合は false
intersects(double, double, double, double)
public boolean contains(double x, double y, double w, double h)
Shape
の内部領域が、指定された矩形領域を完全に包含するかどうかを判定します。矩形領域全体が Shape
に包含されていると見なされるためには、矩形領域内にあるすべての座標が Shape
内に位置している必要があります。
このメソッドは、次のような場合でも false
を返すことがあります。
intersect
メソッドが true
を返し、
Shape
が矩形領域を完全に包含するかどうかを判別する計算の負荷がかなり大きい
Shape
が矩形領域を包含する場合でも false
を返すことがあります。より精密な結果が必要な場合は、Area
クラスを使用すると、Shape
の幾何学的な共通部分の正確な計算を行えます。
w
- 指定された矩形領域の幅h
- 指定された矩形領域の高さ
Shape
の内部領域が、指定された矩形領域を完全に包含する場合は true
、そうでない場合は false
。また、Shape
が矩形領域を包含し、intersects
メソッドが true
を返し、負荷が大き過ぎて包含の計算が行えない場合も false
Area
,
intersects(double, double, double, double)
public boolean contains(Rectangle2D r)
Shape
の内部領域が、指定された Rectangle2D
を完全に包含しているかどうかを判定します。このメソッドは、次のような場合にも false
を返すことがあります。
intersect
メソッドが true
を返し、
Shape
が Rectangle2D
を完全に包含するかどうかを判断する計算の負荷が大きい
Shape
が Rectangle2D
を包含する場合でも false
を返すことがあります。より精密な結果が必要な場合には、Area
クラスを使用すると、Shape
オブジェクトの幾何学的な共通部分の、より正確な計算を行うことができます。
r
- 指定された Rectangle2D
Shape
の内部領域が Rectangle2D
を完全に包含する場合は true
。そうでない場合は false
。また、Shape
が Rectangle2D
を包含し、intersects
メソッドが true
を返し、負荷が大き過ぎて包含の計算が行えない場合も false
contains(double, double, double, double)
public PathIterator getPathIterator(AffineTransform at)
Shape
の境界に沿って繰り返し処理を行い、Shape
の輪郭のジオメトリにアクセスできるようにする反復子オブジェクトを返します。任意の AffineTransform
が指定された場合、繰り返し処理で返される座標がそれに応じて変換されます。
このメソッドを呼び出すたびに、同時に使用されているほかのすべての PathIterator
オブジェクトとは無関係に、Shape
オブジェクトのジオメトリを移動する新しい PathIterator
オブジェクトが返されます。
Shape
インタフェースを実装するオブジェクトは、実行中の繰り返し処理を元のオブジェクトのジオメトリに対して発生する可能性のある変更から分離させることが推奨されますが、これは保証されてはいません。
同時に複数のスレッドで Shape
インタフェースの特定の実装を使用する場合は、事前にドキュメントを参照して、繰り返し処理と変更との分離について保証されているかどうかを確認してください。
at
- 繰り返し処理で返される座標に適用されるオプションの AffineTransform
。変換されていない座標が必要な場合は null
Shape
のジオメトリを独立して移動する新しい PathIterator
オブジェクトpublic 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
|
JavaTM 2 Platform Std. Ed. v1.4.0 |
||||||||||
前のクラス 次のクラス | フレームあり フレームなし | ||||||||||
概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド |
Java、Java 2D、および JDBC は米国ならびにその他の国における米国 Sun Microsystems, Inc. の商標もしくは登録商標です。
Copyright 1993-2002 Sun Microsystems, Inc. 901 San Antonio Road
Palo Alto, California, 94303, U.S.A. All Rights Reserved.