JavaTM 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 は、Shape の輪郭と、輪郭がどのように 2D 平面を内部領域の点と外部領域の点とに分割するかを決める規則を表すことができる PathIterator オブジェクトによって記述されます。各 Shape オブジェクトは、幾何学的図形のバウンディングボックスを取得したり、点または矩形の一部または全体が Shape の内部領域内にあるかどうかを判定したり、Shape の輪郭の軌道輪郭線を記述する PathIterator オブジェクトを取得したりするためのコールバックを提供します。

内側の定義: 点は、次のような場合にだけ Shape の内側にあると見なされます。

 

containsintersects メソッドは、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)
          指定された Point2DShape の境界内にあるかどうかを判定します。
 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 を返します。返された RectangleShape を囲む最小のバウンディングボックスであるとは限りません。 示された Rectangle 内に Shape が完全に収まるというだけです。また、Shape が整数型の制限範囲を超える場合、返された RectangleShape を完全に囲むことができないこともあります。通常は、getBounds2D メソッドの方が、表現の自由度が高いために、比較的ぴったりしたバウンディングボックスを返します。

戻り値:
Shape を完全に囲む整数型の Rectangle
導入されたバージョン:
1.2
関連項目:
getBounds2D()

getBounds2D

Rectangle2D getBounds2D()
高精度で getBounds メソッドより精密な、Shape のバウンディングボックスを返します。返された Rectangle2DShape を囲む最小のバウンディングボックスであるとは限りません。 示された Rectangle2D 内に Shape が完全に収まるというだけです。戻り値を、倍精度値を使用して寸法を格納する Rectangle2D のインスタンスにすることもできるため、このメソッドによって返されるバウンディングボックスは、通常、getBounds メソッドによって返されるバウンディングボックスよりもぴったりしたものになり、オーバーフローのために失敗することはありません。

戻り値:
Shape の高精度バウンディングボックスを表す Rectangle2D のインスタンス
導入されたバージョン:
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)
指定された Point2DShape の境界内にあるかどうかを判定します。

パラメータ:
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 によっては、Rectangle2DShape と交差しない場合でもこのメソッドが 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、そうでない場合は false。また、Shape が矩形領域を包含し、intersects メソッドが true を返し、負荷が大き過ぎて包含の計算が行えない場合も false
導入されたバージョン:
1.2
関連項目:
Area, intersects(double, double, double, double)

contains

boolean contains(Rectangle2D r)
Shape の内部が、指定された Rectangle2D を完全に内包するかどうかを判定します。Shape.contains() メソッドを使用すると、次のような場合に Shape 実装は false を返すことがあります。 つまり、Shape によっては、ShapeRectangle2D を包含する場合でもこのメソッドが false を返すことがあります。Area クラスは、ほとんどの Shape オブジェクトのより精密な幾何学的計算を行うため、より正確な結果が必要な場合に使用できます。

パラメータ:
r - 指定された Rectangle2D
戻り値:
Shape の内部領域が、Rectangle2D を完全に包含する場合は true、そうでない場合は false。また、ShapeRectangle2D を包含し、intersects メソッドが true を返し、負荷が大き過ぎて包含の計算が行えない場合も false
導入されたバージョン:
1.2
関連項目:
contains(double, double, double, double)

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

JavaTM Platform
Standard Ed. 6

バグの報告と機能のリクエスト
さらに詳しい API リファレンスおよび開発者ドキュメントについては、Java SE 開発者用ドキュメントを参照してください。開発者向けの詳細な解説、概念の概要、用語の定義、バグの回避策、およびコード実例が含まれています。

Copyright 2009 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms. Documentation Redistribution Policy も参照してください。