JavaTM Platform
Standard Ed. 6

java.awt.geom
クラス Area

java.lang.Object
  上位を拡張 java.awt.geom.Area
すべての実装されたインタフェース:
Shape, Cloneable

public class Area
extends Object
implements Shape, Cloneable

Area オブジェクトは、2 次元空間の閉じた領域について解像度に依存しない記述を格納および操作します。Area オブジェクトは変換可能で、ほかの Area オブジェクトとの結合時に各種の CAG (構成領域幾何学的図形) 演算を実行できます。CAG 演算には領域の、および排他的論理和などがあります。各種の演算の例については、リンク先のメソッドドキュメントを参照してください。  

Area クラスは、Shape インタフェースを実装し、ヒット検査機能およびパス繰り返し機能のすべてを完全にサポートします。ただし以下のような点で、Area は一般化されたパスよりも特化されています。

Area の使用時に必ずしも明白ではない点は次のとおりです。

導入されたバージョン:
1.2

コンストラクタの概要
Area()
          空の領域を作成するデフォルトコンストラクタです。
Area(Shape s)
          Area クラスは、指定された Shape オブジェクトから領域幾何学的図形を作成します。
 
メソッドの概要
 void add(Area rhs)
          指定された Area の形状をこの Area の形状に追加します。
 Object clone()
          この Area オブジェクトとまったく同じコピーを返します。
 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 を完全に内包するかどうかを判定します。
 Area createTransformedArea(AffineTransform t)
          指定された AffineTransform によって変換されたこの Area と同じ幾何学的図形を含む、新しい Area オブジェクトを作成します。
 boolean equals(Area other)
          2 つの Area オブジェクトの幾何学的図形が等しいかどうかを判定します。
 void exclusiveOr(Area rhs)
          この Area の形状を、現在の形状と指定された Area の形状の結合領域からその共通部分を差し引いた領域に設定します。
 Rectangle getBounds()
          この Area を完全に囲むバウンディング Rectangle を返します。
 Rectangle2D getBounds2D()
          この Area を完全に囲む高精度バウンディング Rectangle2D を返します。
 PathIterator getPathIterator(AffineTransform at)
          この Area オブジェクトの輪郭に使う PathIterator を作成します。
 PathIterator getPathIterator(AffineTransform at, double flatness)
          この Area オブジェクトの平坦化した輪郭のための PathIterator を作成します。
 void intersect(Area rhs)
          この Area の形状を、現在の形状と指定された Area の形状の共通部分に設定します。
 boolean intersects(double x, double y, double w, double h)
          Shape の内部領域が、指定された矩形領域の内部領域と交差するかどうかを判定します。
 boolean intersects(Rectangle2D r)
          Shape の内部が、指定された Rectangle2D の内部と交差するかどうかを判定します。
 boolean isEmpty()
          この Area オブジェクトが領域を囲むかどうかを判定します。
 boolean isPolygonal()
          この Area が完全に、辺が直線の多角形幾何学的図形から構成されているかどうかを判定します。
 boolean isRectangular()
          この Area の形状が矩形かどうかを判定します。
 boolean isSingular()
          この Area が単一の閉鎖サブパスから構成されているかどうかを判定します。
 void reset()
          この Area から幾何学的図形をすべて削除し、空の領域に戻します。
 void subtract(Area rhs)
          指定された Area の形状をこの Area の形状から取り去ります。
 void transform(AffineTransform t)
          この Area の幾何学的図形を、指定された AffineTransform を使って変換します。
 
クラス java.lang.Object から継承されたメソッド
equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

コンストラクタの詳細

Area

public Area()
空の領域を作成するデフォルトコンストラクタです。

導入されたバージョン:
1.2

Area

public Area(Shape s)
Area クラスは、指定された Shape オブジェクトから領域幾何学的図形を作成します。Shape が閉じていなければ、幾何学的図形は明示的に閉じられます。Shape の幾何学的図形で指定されている塗りつぶし規則 (偶奇または屈曲) を使うと、結果として生成される閉じた領域を指定できます。

パラメータ:
s - 領域の作成側の Shape
例外:
NullPointerException - s が null の場合
導入されたバージョン:
1.2
メソッドの詳細

add

public void add(Area rhs)
指定された Area の形状をこの Area の形状に追加します。この Area で得られる形状には、両方の形状の結合部分、またはこの Area か指定された Area のどちらかに収まっているすべての領域が含まれます。
     // Example:
     Area a1 = new Area([triangle 0,0 => 8,0 => 0,8]);
     Area a2 = new Area([triangle 0,0 => 8,0 => 8,8]);
     a1.add(a2);

        a1(before)     +         a2         =     a1(after)

     ################     ################     ################
     ##############         ##############     ################
     ############             ############     ################
     ##########                 ##########     ################
     ########                     ########     ################
     ######                         ######     ######    ######
     ####                             ####     ####        ####
     ##                                 ##     ##            ##
 

パラメータ:
rhs - 現在の形状に追加される Area
例外:
NullPointerException - rhs が null の場合
導入されたバージョン:
1.2

subtract

public void subtract(Area rhs)
指定された Area の形状をこの Area の形状から取り去ります。この Area で得られる形状には、この Area のみに収まっていて、指定された Area には収まっていない領域が含まれます。
     // Example:
     Area a1 = new Area([triangle 0,0 => 8,0 => 0,8]);
     Area a2 = new Area([triangle 0,0 => 8,0 => 8,8]);
     a1.subtract(a2);

        a1(before)     -         a2         =     a1(after)

     ################     ################
     ##############         ##############     ##
     ############             ############     ####
     ##########                 ##########     ######
     ########                     ########     ########
     ######                         ######     ######
     ####                             ####     ####
     ##                                 ##     ##
 

パラメータ:
rhs - 現在の形状から差し引かれる Area
例外:
NullPointerException - rhs が null の場合
導入されたバージョン:
1.2

intersect

public void intersect(Area rhs)
この Area の形状を、現在の形状と指定された Area の形状の共通部分に設定します。この Area で得られる形状には、この Area と指定された Area の両方に収まっている領域だけが含まれます。
     // Example:
     Area a1 = new Area([triangle 0,0 => 8,0 => 0,8]);
     Area a2 = new Area([triangle 0,0 => 8,0 => 8,8]);
     a1.intersect(a2);

      a1(before)   intersect     a2         =     a1(after)

     ################     ################     ################
     ##############         ##############       ############
     ############             ############         ########
     ##########                 ##########           ####
     ########                     ########
     ######                         ######
     ####                             ####
     ##                                 ##
 

パラメータ:
rhs - この Area と交差させる Area
例外:
NullPointerException - rhs が null の場合
導入されたバージョン:
1.2

exclusiveOr

public void exclusiveOr(Area rhs)
この Area の形状を、現在の形状と指定された Area の形状の結合領域からその共通部分を差し引いた領域に設定します。この Area で得られる形状には、この Area または指定された Area のどちらか一方だけに収まっている領域が含まれます。両方に収まっている領域は含まれません。
     // Example:
     Area a1 = new Area([triangle 0,0 => 8,0 => 0,8]);
     Area a2 = new Area([triangle 0,0 => 8,0 => 8,8]);
     a1.exclusiveOr(a2);

        a1(before)    xor        a2         =     a1(after)

     ################     ################
     ##############         ##############     ##            ##
     ############             ############     ####        ####
     ##########                 ##########     ######    ######
     ########                     ########     ################
     ######                         ######     ######    ######
     ####                             ####     ####        ####
     ##                                 ##     ##            ##
 

パラメータ:
rhs - この Area との排他的論理和を求める Area
例外:
NullPointerException - rhs が null の場合
導入されたバージョン:
1.2

reset

public void reset()
この Area から幾何学的図形をすべて削除し、空の領域に戻します。

導入されたバージョン:
1.2

isEmpty

public boolean isEmpty()
この Area オブジェクトが領域を囲むかどうかを判定します。

戻り値:
この Area オブジェクトが空の領域を表す場合は true、そうでない場合は false
導入されたバージョン:
1.2

isPolygonal

public boolean isPolygonal()
この Area が完全に、辺が直線の多角形幾何学的図形から構成されているかどうかを判定します。

戻り値:
この Area の幾何学的図形が完全に線セグメントから 構成されている場合は true、 そうでない場合は false
導入されたバージョン:
1.2

isRectangular

public boolean isRectangular()
この Area の形状が矩形かどうかを判定します。

戻り値:
この Area の幾何学的図形の形状が矩形の場合は true、そうでない場合は false
導入されたバージョン:
1.2

isSingular

public boolean isSingular()
この Area が単一の閉鎖サブパスから構成されているかどうかを判定します。このメソッドは、パスがサブパスを 0 または 1 つ含む場合は true、パスが 2 つ以上のサブパスを含む場合は false を返します。サブパスは、パスに現れる SEG_MOVETO セグメントの数によって数えられます。

戻り値:
Area が 1 つの基本幾何学的図形から構成されている場合は true、そうでない場合は false
導入されたバージョン:
1.2

getBounds2D

public Rectangle2D getBounds2D()
この Area を完全に囲む高精度バウンディング Rectangle2D を返します。  

Area クラスはその Shape にできるだけぴったりしたバウンディングボックスを返そうとします。バウンディングボックスは Shape の輪郭のカーブの制御点を含むようにはパディングされず、輪郭自体の実際の幾何学的図形にぴったりの大きさになります。

定義:
インタフェース Shape 内の getBounds2D
戻り値:
Area のバウンディング Rectangle2D
導入されたバージョン:
1.2
関連項目:
Shape.getBounds()

getBounds

public Rectangle getBounds()
この Area を完全に囲むバウンディング Rectangle を返します。  

Area クラスはその Shape にできるだけぴったりしたバウンディングボックスを返そうとします。バウンディングボックスは Shape の輪郭のカーブの制御点を含むようにはパディングされず、輪郭自体の実際の幾何学的図形にぴったりの大きさになります。返されたオブジェクトは整数でバウンディングボックスを表すので、バウンディングボックスは、Shape の幾何学的図形を取り囲むもっとも近い整数座標というレベルでの一致になります。

定義:
インタフェース Shape 内の getBounds
戻り値:
Area のバウンディング Rectangle
導入されたバージョン:
1.2
関連項目:
Shape.getBounds2D()

clone

public Object clone()
この Area オブジェクトとまったく同じコピーを返します。

オーバーライド:
クラス Object 内の clone
戻り値:
作成された複製オブジェクト
導入されたバージョン:
1.2
関連項目:
Cloneable

equals

public boolean equals(Area other)
2 つの Area オブジェクトの幾何学的図形が等しいかどうかを判定します。引数が null の場合、このメソッドは false を返します。

パラメータ:
other - この Area と比較される Area
戻り値:
2 つの幾何学的図形が等しい場合は true、 そうでない場合は false
導入されたバージョン:
1.2

transform

public void transform(AffineTransform t)
この Area の幾何学的図形を、指定された AffineTransform を使って変換します。幾何学的図形が適切に変換され、これにより、このオブジェクトによって定義されている閉じた領域が永久的に変更されます。

パラメータ:
t - 領域を変換するのに使う変換
例外:
NullPointerException - t が null の場合
導入されたバージョン:
1.2

createTransformedArea

public Area createTransformedArea(AffineTransform t)
指定された AffineTransform によって変換されたこの Area と同じ幾何学的図形を含む、新しい Area オブジェクトを作成します。この Area オブジェクトは変化しません。

パラメータ:
t - 新しい Area の変換に使う、 指定された AffineTransform
戻り値:
変換された幾何学的図形を表す新しい Area オブジェクト
例外:
NullPointerException - t が null の場合
導入されたバージョン:
1.2

contains

public boolean contains(double x,
                        double y)
指定された座標が Shape の境界内にあるかどうかを判定します。

定義:
インタフェース Shape 内の contains
パラメータ:
x - 判定対象の指定された X 座標
y - 判定対象の指定された Y 座標
戻り値:
指定された座標が Shape の 境界内にある場合は true、そうでない場合は false
導入されたバージョン:
1.2

contains

public boolean contains(Point2D p)
指定された Point2DShape の境界内にあるかどうかを判定します。

定義:
インタフェース Shape 内の contains
パラメータ:
p - 判定対象の、指定された Point2D
戻り値:
指定された Point2DShape の 境界内にある場合は true、 そうでない場合は false
導入されたバージョン:
1.2

contains

public boolean contains(double x,
                        double y,
                        double w,
                        double h)
Shape の内部領域が、指定された矩形領域を完全に包含するかどうかを判定します。矩形領域全体が Shape に包含されていると見なされるためには、矩形領域内にあるすべての座標が Shape 内に位置している必要があります。  

Shape.contains() メソッドを使用すると、次のような場合に Shape 実装は false を返すことがあります。

つまり、Shape によっては、Shape が矩形領域を包含する場合でもこのメソッドが false を返すことがあります。Area クラスは、ほとんどの Shape オブジェクトのより精密な幾何学的計算を行うため、より正確な結果が必要な場合に使用できます。

定義:
インタフェース Shape 内の contains
パラメータ:
x - 指定された矩形領域の 左上隅の X 座標
y - 指定された矩形領域の 左上隅の Y 座標
w - 指定された矩形領域の幅
h - 指定された矩形領域の高さ
戻り値:
Shape の内部領域が、指定された矩形領域を 完全に包含する場合は true、 そうでない場合は false。 また、Shape が矩形領域を包含し、 intersects メソッドが true を返し、 負荷が大き過ぎて包含の計算が行えない場合も false
導入されたバージョン:
1.2
関連項目:
Area, Shape.intersects(double, double, double, double)

contains

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

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

intersects

public boolean intersects(double x,
                          double y,
                          double w,
                          double h)
Shape の内部領域が、指定された矩形領域の内部領域と交差するかどうかを判定します。Shape の内部領域と指定された矩形領域の両方に含まれる点がある場合、矩形領域は Shape と交差していると見なされます。  

Shape.intersects() メソッドを使用すると、次のような場合に Shape 実装は true を返すことがあります。

つまり、Shape によっては、矩形領域が Shape と交差しない場合でもこのメソッドが true を返すことがあります。Area クラスは、ほとんどの Shape オブジェクトの幾何学的な共通部分のより精密な計算を行うため、より正確な結果が必要な場合に使用できます。

定義:
インタフェース Shape 内の intersects
パラメータ:
x - 指定された矩形領域の 左上隅の X 座標
y - 指定された矩形領域の 左上隅の Y 座標
w - 指定された矩形領域の幅
h - 指定された矩形領域の高さ
戻り値:
Shape の内部領域と矩形領域の内部領域が交差する場合、 または交差する可能性が高いが、負荷が大き過ぎて 共通部分の計算を行えない場合も true、 そうでない場合は false
導入されたバージョン:
1.2
関連項目:
Area

intersects

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

定義:
インタフェース Shape 内の intersects
パラメータ:
r - 指定された Rectangle2D
戻り値:
Shape の内部領域と 指定された Rectangle2D の内部領域が交差する場合、 または交差する可能性が高いが、負荷が大き過ぎて 共通部分の計算を行えない場合も true、 そうでない場合は false
導入されたバージョン:
1.2
関連項目:
Shape.intersects(double, double, double, double)

getPathIterator

public PathIterator getPathIterator(AffineTransform at)
この Area オブジェクトの輪郭に使う PathIterator を作成します。この Area オブジェクトは変化しません。

定義:
インタフェース Shape 内の getPathIterator
パラメータ:
at - 繰り返し処理で返されるときに座標に適用される オプションの AffineTransform、 変換されていない座標が必要な場合は null
戻り値:
この Area の輪郭の幾何学的図形を 一度に 1 セグメントずつ返す PathIterator オブジェクト
導入されたバージョン:
1.2

getPathIterator

public PathIterator getPathIterator(AffineTransform at,
                                    double flatness)
この Area オブジェクトの平坦化した輪郭のための PathIterator を作成します。SEG_MOVETO、SEG_LINETO、SEG_CLOSE の 3 種類の点によって表現される曲線状でないパスセグメントだけが、反復子によって返されます。この Area オブジェクトは変化しません。

定義:
インタフェース Shape 内の getPathIterator
パラメータ:
at - 繰り返し処理で返されるときに座標に適用される オプションの AffineTransform。 変換されていない座標が必要な場合は null
flatness - 分割された曲線が終点を結ぶ直線によって 置換される前に、指定された曲線の制御点が 共線から外れることのできる最大距離
戻り値:
この Area の輪郭の幾何学的図形を 一度に 1 セグメントずつ返す PathIterator オブジェクト
導入されたバージョン:
1.2

JavaTM Platform
Standard Ed. 6

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

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