appendix> 2D> Shape TOPUPPREVNEXT

インターフェース Shape

【主な機能】

Shape は、一般的な平面図形を表すためのインターフェースです。 図形は、輪郭の記述と、 輪郭がどのように平面を内部領域と外部領域とに分割するかを決める規則 (PathIterator インターフェース)によって記述されます。

Shape インターフェースを実装するクラスは、 図形のバウンディングボックスを取得したり、 点または矩形の一部または全体が自分自身の内側にあるかどうかを判定したり、 図形の輪郭の軌道輪郭線を記述する PathIterator オブジェクトを取得したり するためのコールバックを提供します。

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

【メソッド】

Shape を実装するために必要なメソッドは次の10個です。

メソッド機能
boolean contains(Point2D p) p が この図形の境界内にあるかどうかを判定します。
boolean contains( double x , double y ) 指定された座標が、この図形の境界内にあるかどうかを判定します。
boolean contains(Rectangle2D r) この図形の内部領域が、 r指定された矩形を完全に包含しているかどうかを判定します。
boolean contains(
double x ,
double y ,
double w ,
double h )
この図形が、 ( x, y, w, h ) で指定された矩形領域を完全に包含しているかを判定します。
このメソッドは、次のような場合でも true を返すことがあります。
矩形領域と Shape が重なり合っている可能性がかなり高いが、 この共通部分を正確に判断する計算の負荷がかなり大きい。
つまり、このメソッドは、矩形領域が自分自身と交差しない場合でも true を返すことがあります。 正確な結果が必要な場合には、 Area クラスを使用して共通部分を計算する必要があります。
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 の内部領域と交差するかどうかを判定します。

【実装済みのクラス】

Shape を実装済みのクラスです。パッケージ java.awt.geom に実装されています。
親クラス クラス 概要
Line2D Line2D.Double 始点と終点で示される線分
Line2D.Float
RectangularShape Arc2D Arc2D.Double 四角形の領域に内接する楕円の一部(弧)。
弧の部分、扇型の直線部分、パイ形の外形の3種の表示ができます。
Arc2D.Float
Ellipse2D Ellipse2D.Double 四角形の領域に内接する楕円
Ellipse2D.Float
Rectangle2D Rectangle
Rectangle2D.Double 四角形
Rectangle2D.Float
RoundRectangle2D RoundRectangle2D.Double 隅が丸い四角形
RoundRectangle2D.Float
Rectangle (上記) DefaultCaret BasicTextUI.BasecCaret
  Area
Path2D Path2D.Double
Path2D.Float
Path2D.Float (上記) GeneralPath 一般の図形
  Polygon 多角形
CubicCurve2D CubicCurve2D.Double 3次ベジエ曲線
CubicCurve2D.Float
QuadCurve2D QuadCurve2D.Double 2次ベジエ曲線
QuadCurve2D.Float

作成日:2004-12-07
更新日:2012-11-10