public class Area extends Object implements Shape, Cloneable
Areaオブジェクトは、2次元空間の閉じた領域について解像度に依存しない記述を格納および操作します。 Areaオブジェクトは変換可能であり、ほかのAreaオブジェクトとの結合時に各種の構成領域ジオメトリ(CAG)演算を実行できます。 CAG演算には、領域のaddition、subtraction、intersection、およびexclusive orが含まれます。 各種の演算の例については、リンク先のメソッド・ドキュメントを参照してください。
Areaクラスは、Shapeインタフェースを実装し、その当たり判定およびパス反復機能のすべてを完全にサポートしますが、次のいくつかの点で、Areaは一般化されたパスより特化されています。
Areaオブジェクトは、これらのパスがGraphics2D.fillメソッドで塗りつぶされたかのように、構築中に暗黙的に閉じられます。
Areaの輪郭線を記述するパスの幾何学的図形は、同じ2次元の閉じた領域を記述しているという点でのみ構築元のパスに似ていますが、記述のためにまったく異なるタイプと順序のパス・セグメントを使用する可能性があります。
Areaの使用時に必ずしも明白ではない点は次のとおりです。
ShapeからAreaを作成すると、Areaオブジェクトの輪郭線は閉じます。
ShapeからAreaを作成すると、空のAreaが生成されます。 たとえばよくある例として、ラインが囲んでいる領域がないために、このラインからAreaを生成すると空になります。 空のAreaは、そのPathIteratorオブジェクト内の幾何学的図形を反復しません。
Shapeは、それぞれが元のパスのいずれかの交差していない部分を囲む2つ(以上の)サブパスに分割されることがあります。
Areaは、元の輪郭線が単純で明確であっても、多くのパス・セグメントを使用して同じ幾何学的図形を記述することがあります。 Areaクラスがパス上で実行する必要がある分析は、人が考える「単純で明確」という概念と同じ概念を反映しているとはかぎりません。
| コンストラクタ | 説明 |
|---|---|
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) |
|
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) |
指定された
AffineTransformを使用して、このAreaの幾何学的図形を変換します。 |
public Area()
public Area(Shape s)
Areaクラスは、指定されたShapeオブジェクトから領域幾何学的図形を作成します。 Shapeがまだ閉じられていない場合、幾何学的図形は明示的に閉じられます。 Shapeの幾何学的図形で指定されている塗りつぶし規則(偶奇または屈曲)を使うと、結果として生成される閉じた領域を指定できます。 s - 領域の構築元のShapeNullPointerException - sがnullである場合public void add(Area rhs)
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 - 現在の形状に追加されるAreaNullPointerException - rhsがnullである場合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 - 現在の形状から差し引かれるAreaNullPointerException - rhsがnullである場合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と交差させるAreaNullPointerException - rhsがnullである場合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である場合public void reset()
Areaから幾何学的図形をすべて削除し、空の領域に戻します。public boolean isEmpty()
Areaオブジェクトが領域を囲むかどうかを判定します。Areaオブジェクトが空の領域を表す場合はtrue。それ以外の場合はfalse。public boolean isPolygonal()
Areaが完全に、辺が直線の多角形幾何学的図形から構成されているかどうかを判定します。Areaの幾何学的図形が完全にライン・セグメントから構成されている場合はtrue。それ以外の場合はfalse。public boolean isRectangular()
Areaの形状が矩形かどうかを判定します。Areaの幾何学的図形の形状が矩形の場合はtrue。それ以外の場合はfalse。public boolean isSingular()
Areaが単一の閉じられたサブパスから構成されているかどうかを判定します。 このメソッドは、パスに含まれているサブパスが0または1つの場合はtrueを、パスに含まれているサブパスが2つ以上の場合はfalseを返します。 サブパスは、パスに現れるSEG_MOVETOセグメントの数によってカウントされます。 Areaが1つの基本幾何学的図形から構成されている場合はtrue。それ以外の場合はfalse。public Rectangle2D getBounds2D()
Areaを完全に囲む高精度バウンディングRectangle2Dを返します。
AreaクラスはそのShapeにできるだけぴったりしたバウンディング・ボックスを返そうとします。 バウンディング・ボックスはShapeの輪郭のカーブの制御点を含むようにはパディングされず、輪郭自体の実際の幾何学的図形にぴったりの大きさになります。
getBounds2D、インタフェースShapeAreaのバウンディングRectangle2D。Shape.getBounds()public Rectangle getBounds()
Areaを完全に囲むバウンディングRectangleを返します。
AreaクラスはそのShapeにできるだけぴったりしたバウンディング・ボックスを返そうとします。 バウンディング・ボックスはShapeの輪郭のカーブの制御点を含むようにはパディングされず、輪郭自体の実際の幾何学的図形にぴったりの大きさになります。 返されたオブジェクトは整数でバウンディング・ボックスを表すので、バウンディング・ボックスは、Shapeの幾何学的図形を取り囲むもっとも近い整数座標というレベルでの一致になります。
getBounds、インタフェースShapeAreaのバウンディングRectangle。Shape.getBounds2D()public Object clone()
Areaオブジェクトとまったく同じコピーを返します。public boolean equals(Area other)
Areaオブジェクトの幾何学的図形が等しいかどうかを判定します。 引数がnullの場合、このメソッドはfalseを返します。 other - このAreaと比較されるAreatrue。それ以外の場合はfalse。public void transform(AffineTransform t)
AffineTransformを使用して、このAreaの幾何学的図形を変換します。 幾何学的図形が適切に変換され、これにより、このオブジェクトによって定義されている閉じた領域が永久的に変更されます。 t - 領域を変換するために使用される変換NullPointerException - tがnullである場合public Area createTransformedArea(AffineTransform t)
AffineTransformによって変換されたこのAreaと同じ幾何学的図形を含む、新しいAreaオブジェクトを作成します。 このAreaオブジェクトは変化しません。 t - 新しいAreaを変換するために使用される指定されたAffineTransformAreaオブジェクト。NullPointerException - tがnullである場合public boolean contains(double x,
double y)
Shapeの境界の内側にあるかどうかをテストします。public boolean contains(Point2D p)
public 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オブジェクトより正確な幾何学的計算を実行するため、より的確な答えが必要な場合に使用できます。 contains、インタフェースShapex - 指定された矩形領域の左上隅のX座標y - 指定された矩形領域の左上隅のY座標w - 指定された矩形領域の幅h - 指定された矩形領域の高さShapeの内部に、指定された矩形領域が完全に含まれる場合はtrue、それ以外の場合、またはShapeに矩形領域が含まれ、intersectsメソッドがtrueを返し、さらに負荷が大きすぎて包含の計算を実行できない場合はfalse。Area、Shape.intersects(double, double, double, double)public boolean contains(Rectangle2D r)
Shapeの内部に、指定されたRectangle2Dが完全に含まれるかどうかをテストします。 Shape.contains()メソッドを使用すると、次のような場合に、Shape実装は内部的にfalseを返すことができます。
intersectメソッドがtrueを返し、かつ
ShapeにRectangle2Dが完全に含まれるかどうかを判定するための計算の負荷が非常に大きい。
Shapesによっては、ShapeにRectangle2Dが含まれている場合でもこのメソッドがfalseを返すことがあります。 Areaクラスは、ほとんどのShapeオブジェクトより正確な幾何学的計算を実行するため、より的確な答えが必要な場合に使用できます。 contains、インタフェースShaper - 指定されたRectangle2DShapeの内部にRectangle2Dが完全に含まれる場合はtrue、それ以外の場合、またはShapeにRectangle2Dが含まれ、intersectsメソッドがtrueを返し、さらに負荷が大きすぎて包含の計算を実行できない場合はfalse。Shape.contains(double, double, double, double)public boolean intersects(double x,
double y,
double w,
double h)
Shapeの内部が指定された矩形領域の内部と交差しているかどうかをテストします。 Shapeの内部と指定された矩形領域の両方に含まれている点が存在する場合、その矩形領域はShapeと交差していると見なされます。
Shape.intersects()メソッドを使用すると、次のような場合に、Shape実装は内部的にtrueを返すことができます。
Shapeが交差している可能性が高いが、
Shapesによっては、矩形領域がShapeと交差していない場合でもこのメソッドがtrueを返すことがあります。 Areaクラスは、ほとんどのShapeオブジェクトより正確な、幾何学的な共通部分の計算を実行するため、より的確な答えが必要な場合に使用できます。 intersects、インタフェースShapex - 指定された矩形領域の左上隅のX座標y - 指定された矩形領域の左上隅のY座標w - 指定された矩形領域の幅h - 指定された矩形領域の高さShapeの内部と矩形領域の内部が交差しているか、またはどちらも交差している可能性が高いが、負荷が大きすぎて共通部分の計算を実行できない場合はtrue、それ以外の場合はfalse。Areapublic boolean intersects(Rectangle2D r)
Shapeの内部が指定されたRectangle2Dの内部と交差しているかどうかをテストします。 Shape.intersects()メソッドを使用すると、次のような場合に、Shape実装は内部的にtrueを返すことができます。
Rectangle2DとShapeが交差している可能性が高いが、
Shapesによっては、Rectangle2DがShapeと交差していない場合でもこのメソッドがtrueを返すことがあります。 Areaクラスは、ほとんどのShapeオブジェクトより正確な、幾何学的な共通部分の計算を実行するため、より的確な答えが必要な場合に使用できます。 intersects、インタフェースShaper - 指定されたRectangle2DShapeの内部と指定されたRectangle2Dの内部が交差しているか、またはどちらも交差している可能性が高いが、負荷が大きすぎて共通部分の計算を実行できない場合はtrue、それ以外の場合はfalse。Shape.intersects(double, double, double, double)public PathIterator getPathIterator(AffineTransform at)
Areaオブジェクトの輪郭のPathIteratorを作成します。 このAreaオブジェクトは変化しません。 getPathIterator、インタフェースShapeat - 反復処理で返されるときに座標に適用されるオプションのAffineTransform、または変換されていない座標が必要な場合はnullAreaの輪郭の幾何学的図形を一度に1セグメントずつ返すPathIteratorオブジェクト。public PathIterator getPathIterator(AffineTransform at, double flatness)
Areaオブジェクトの平坦化した輪郭のPathIteratorを作成します。 SEG_MOVETO、SEG_LINETO、SEG_CLOSEの3種類の点によって表現される曲線状でないパス・セグメントだけが、イテレータによって返されます。 このAreaオブジェクトは変化しません。 getPathIterator、インタフェースShapeat - 反復処理で返されるときに座標に適用されるオプションのAffineTransform、または変換されていない座標が必要な場合はnullflatness - 分割された曲線が終点を結ぶ直線によって置換される前に、指定された曲線の制御点が共線から外れることのできる最大距離Areaの輪郭の幾何学的図形を一度に1セグメントずつ返すPathIteratorオブジェクト。 バグまたは機能を送信
詳細なAPIリファレンスおよび開発者ドキュメントについては、Java SEのドキュメントを参照してください。 そのドキュメントには、概念的な概要、用語の定義、回避方法、有効なコード例などの、開発者を対象にしたより詳細な説明が含まれています。
Copyright © 1993, 2025, Oracle and/or its affiliates. All rights reserved. Use is subject to license terms. Documentation Redistribution Policyも参照してください。