public abstract class Path2D extends Object implements Shape, Cloneable
Path2D
クラスは、単純ですが柔軟性のある、任意の幾何学的パスを表す形状を提供します。これは、PathIterator
インタフェースによって反復できるすべてのパス(そのセグメントのタイプと屈曲規則のすべてを含む)を完全に表すことができるほか、Shape
インタフェースの基本的な当たり判定メソッドをすべて実装します。
浮動小数点精度で表したり、使用したりできるデータを扱うときは、Path2D.Float
を使用します。倍精度の正確性または範囲が必要なデータには、Path2D.Double
を使用します。
Path2D
は、幾何学的パスの基本的な構築および管理でまさに必要となる機能を備えているほか、前述のインタフェースに若干の解釈を加えたものを実装しています。単純な当たり判定だけでなく、閉じた幾何学的形状の内部を操作することが有効な場合は、Area
クラスを使用すると、閉じた図形に特化した追加機能を使用できます。どちらのクラスも表向きはShape
インタフェースを実装していますが、その目的が異なります。組み合わせて使用することにより、幾何学的形状に対して便利な観点を2つ提供します。Path2D
は主にパス・セグメントによって形成される軌跡を扱うのに対して、Area
は2D幾何学的空間の閉じた領域の解釈や操作が中心です。
PathIterator
インタフェースには、パスを構成するセグメントのタイプと、パスの内側または外側にある領域を特定する方法を制御する屈曲規則について、詳細な説明が用意されています。
修飾子と型 | クラスと説明 |
---|---|
static class |
Path2D.Double
Double クラスは、座標が倍精度浮動小数点で格納される幾何学的パスを定義します。 |
static class |
Path2D.Float
Float クラスは、座標が単精度浮動小数点で格納される幾何学的パスを定義します。 |
修飾子と型 | フィールドと説明 |
---|---|
static int |
WIND_EVEN_ODD
パスの内部を決める偶奇屈曲規則です。
|
static int |
WIND_NON_ZERO
パスの内部を決める非ゼロ屈曲規則です。
|
修飾子と型 | メソッドと説明 |
---|---|
abstract void |
append(PathIterator pi, boolean connect)
指定された
PathIterator オブジェクトの幾何学的図形をパスに追加します。その新しい幾何学的図形をライン・セグメントで既存のパス・セグメントに接続することも可能です。 |
void |
append(Shape s, boolean connect)
指定された
Shape オブジェクトの幾何学的図形をパスに追加します。その新しい幾何学的図形をライン・セグメントで既存のパス・セグメントに接続することも可能です。 |
abstract Object |
clone()
このオブジェクトと同じクラスの新しいオブジェクトを作成します。
|
void |
closePath()
最後の
moveTo の座標まで直線を描画して現在のサブパスを閉じます。 |
boolean |
contains(double x, double y)
指定された座標が、内側の定義によって記述された
Shape の境界の内側にあるかどうかをテストします。 |
boolean |
contains(double x, double y, double w, double h)
Shape の内部に、指定された矩形領域が完全に含まれるかどうかをテストします。 |
static boolean |
contains(PathIterator pi, double x, double y)
指定された座標が指定された
PathIterator の閉じた境界内にあるかどうかを判定します。 |
static boolean |
contains(PathIterator pi, double x, double y, double w, double h)
指定された矩形領域全体が指定された
PathIterator の閉じた境界内にあるかどうかを判定します。 |
static boolean |
contains(PathIterator pi, Point2D p)
指定された
Point2D が指定されたPathIterator の閉じた境界内にあるかどうかを判定します。 |
static boolean |
contains(PathIterator pi, Rectangle2D r)
指定された
Rectangle2D 全体が指定されたPathIterator の閉じた境界内にあるかどうかを判定します。 |
boolean |
contains(Point2D p)
|
boolean |
contains(Rectangle2D r)
Shape の内部に、指定されたRectangle2D が完全に含まれるかどうかをテストします。 |
Shape |
createTransformedShape(AffineTransform at)
この
Path2D の変換されたあとのバージョンを表す、新しいShape を返します。 |
abstract void |
curveTo(double x1, double y1, double x2, double y2, double x3, double y3)
3つの新しい点によって定義される曲線セグメントをパスに追加します。曲線セグメントは、指定された点
(x1,y1) と点(x2,y2) をベジェ制御点として使用して、現在の座標と指定された座標(x3,y3) の両方を通るベジェ曲線として描画します。 |
Rectangle |
getBounds()
Shape を完全に囲む整数のRectangle を返します。 |
Point2D |
getCurrentPoint()
パスの最後に追加されたもっとも新しい座標を
Point2D オブジェクトとして返します。 |
PathIterator |
getPathIterator(AffineTransform at, double flatness)
Shape の境界に沿って反復し、Shape の輪郭の幾何学的図形の平坦化されたビューへのアクセスを提供するイテレータ・オブジェクトを返します。 |
int |
getWindingRule()
塗りつぶしスタイル屈曲規則を返します。
|
boolean |
intersects(double x, double y, double w, double h)
Shape の内部が指定された矩形領域の内部と交差しているかどうかをテストします。 |
static boolean |
intersects(PathIterator pi, double x, double y, double w, double h)
指定された
PathIterator の内部が、指定された矩形座標セットの内部と交差するかどうかを判定します。 |
static boolean |
intersects(PathIterator pi, Rectangle2D r)
指定された
PathIterator の内部が、指定されたRectangle2D の内部と交差するかどうかを判定します。 |
boolean |
intersects(Rectangle2D r)
Shape の内部が指定されたRectangle2D の内部と交差しているかどうかをテストします。 |
abstract void |
lineTo(double x, double y)
現在の座標から倍精度で新しく指定された座標まで直線を描画して点をパスに追加します。
|
abstract void |
moveTo(double x, double y)
倍精度で指定された座標に移動して点をパスに追加します。
|
abstract void |
quadTo(double x1, double y1, double x2, double y2)
2つの新しい点によって定義される曲線セグメントをパスに追加します。曲線セグメントは、指定された点
(x1,y1) を2次パラメトリック制御点として使用して、現在の座標と指定された座標(x2,y2) を通る2次曲線として描画します。 |
void |
reset()
パスを空にリセットします。
|
void |
setWindingRule(int rule)
このパスの屈曲規則を指定された値に設定します。
|
abstract void |
transform(AffineTransform at)
指定された
AffineTransform を使用して、このパスの幾何学的図形を変換します。 |
equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
getBounds2D, getPathIterator
public static final int WIND_EVEN_ODD
PathIterator.WIND_EVEN_ODD
、定数フィールド値public static final int WIND_NON_ZERO
PathIterator.WIND_NON_ZERO
、定数フィールド値public abstract void moveTo(double x, double y)
x
- 指定されたX座標y
- 指定されたY座標public abstract void lineTo(double x, double y)
x
- 指定されたX座標y
- 指定されたY座標public abstract void quadTo(double x1, double y1, double x2, double y2)
(x1,y1)
を2次パラメトリック制御点として使用して、現在の座標と指定された座標(x2,y2)
を通る2次曲線として描画します。すべての座標は、倍精度で指定されます。x1
- 2次制御点のX座標y1
- 2次制御点のY座標x2
- 最後の終点のX座標y2
- 最後の終点のY座標public abstract void curveTo(double x1, double y1, double x2, double y2, double x3, double y3)
(x1,y1)
と点(x2,y2)
をベジェ制御点として使用して、現在の座標と指定された座標(x3,y3)
の両方を通るベジェ曲線として描画します。すべての座標は、倍精度で指定されます。x1
- 最初のベジェ制御点のX座標y1
- 最初のベジェ制御点のY座標x2
- 2番目のベジェ制御点のX座標y2
- 2番目のベジェ制御点のY座標x3
- 最後の終点のX座標y3
- 最後の終点のY座標public final void closePath()
moveTo
の座標まで直線を描画して現在のサブパスを閉じます。パスがすでに閉じている場合、このメソッドは効果がありません。public final void append(Shape s, boolean connect)
Shape
オブジェクトの幾何学的図形をパスに追加します。その新しい幾何学的図形をライン・セグメントで既存のパス・セグメントに接続することも可能です。connect
パラメータがtrue
であり、パスが空でない場合、追加されたShape
の幾何学的図形の初期moveTo
はlineTo
セグメントに変わります。そのような接続lineTo
セグメントのデスティネーションの座標が現在開いているサブパスの終了座標と一致する場合、セグメントは不要なので省略されます。指定されたShape
の屈曲規則は無視され、追加された幾何学的図形はこのパスに指定された屈曲規則に制御されます。s
- このパスに幾何学的図形が追加されるShape
connect
- 新しい幾何学的図形を既存のパスに接続するために初期moveTo
セグメントをlineTo
セグメントに変えるかどうかを制御するboolean値public abstract void append(PathIterator pi, boolean connect)
PathIterator
オブジェクトの幾何学的図形をパスに追加します。その新しい幾何学的図形をライン・セグメントで既存のパス・セグメントに接続することも可能です。connect
パラメータがtrue
であり、パスが空でない場合、追加されたShape
の幾何学的図形の初期moveTo
はlineTo
セグメントに変わります。そのような接続lineTo
セグメントのデスティネーションの座標が現在開いているサブパスの終了座標と一致する場合、セグメントは不要なので省略されます。指定されたShape
の屈曲規則は無視され、追加された幾何学的図形はこのパスに指定された屈曲規則に制御されます。pi
- このパスに幾何学的図形が追加されるPathIterator
connect
- 新しい幾何学的図形を既存のパスに接続するために初期moveTo
セグメントをlineTo
セグメントに変えるかどうかを制御するboolean値public final int getWindingRule()
WIND_EVEN_ODD
, WIND_NON_ZERO
, setWindingRule(int)
public final void setWindingRule(int rule)
rule
- 指定された屈曲規則を表す整数IllegalArgumentException
- rule
がWIND_EVEN_ODD
またはWIND_NON_ZERO
のどちらでもない場合getWindingRule()
public final Point2D getCurrentPoint()
Point2D
オブジェクトとして返します。Point2D
オブジェクト。パスに点が含まれていない場合はnull
。public final void reset()
public abstract void transform(AffineTransform at)
AffineTransform
を使用して、このパスの幾何学的図形を変換します。幾何学的図形は適切に変換され、これにより、このオブジェクトによって定義される境界が永久的に変更されます。at
- 領域を変換するのに使うAffineTransform
public final Shape createTransformedShape(AffineTransform at)
Path2D
の変換されたあとのバージョンを表す、新しいShape
を返します。戻り値の正確な型と座標の精度は、このメソッドでは指定されません。このメソッドは、変換された幾何学的図形のための、このPath2D
が現在維持している精度に劣らない精度を含むShapeを返しますが、それ以下の精度が含まれることもあります。結果での精度とストレージ・サイズのトレードオフが重要な場合は、選択を明確にするために、Path2D.Float
サブクラスとPath2D.Double
サブクラスの簡易コンストラクタを使用するようにしてください。at
- 新しいShape
を変換するために使用されるAffineTransform
。AffineTransform
で変換された新しいShape
。public final Rectangle getBounds()
Shape
を完全に囲む整数のRectangle
を返します。返されたRectangle
がShape
を囲む最小のバウンディング・ボックスであるとは限りません。示されたRectangle
内にShape
が完全に収まるというだけです。また、Shape
が整数型の制限範囲を超える場合、返されたRectangle
はShape
を完全に囲むことができないこともあります。通常は、getBounds2D
メソッドの方が、表現の自由度が高いために、比較的ぴったりしたバウンディング・ボックスを返します。
内側の定義によって、shape
の定義する輪郭上の点が、返されたbounds
オブジェクトに含まれていると見なされない状況が発生する場合があります。ただし、これは、これらの点が元のshape
にも含まれていないと見なされる場合のみです。
point
がcontains(point)
メソッドに従ってshape
の内側にある場合は、bounds
のcontains(point)
メソッドに従って、返されたRectangle
境界オブジェクトの内側にある必要があります。具体的には、次のようになります。
shape.contains(x,y)
には次が必要: bounds.contains(x,y)
point
がshape
の内側にない場合は、引き続きbounds
オブジェクトに含まれている可能性があります。
bounds.contains(x,y)
は次を示さない: shape.contains(x,y)
getBounds
、インタフェース: Shape
Shape
を完全に囲む整数型のRectangle
。Shape.getBounds2D()
public static boolean contains(PathIterator pi, double x, double y)
PathIterator
の閉じた境界内にあるかどうかを判定します。
このメソッドは、Shape
インタフェースの実装者がShape.contains(double, double)
メソッドのサポートを実装するための基本的な機能を提供します。
pi
- 指定されたPathIterator
x
- 指定されたX座標y
- 指定されたY座標PathIterator
の境界内にある場合はtrue
、そうでない場合はfalse
public static boolean contains(PathIterator pi, Point2D p)
Point2D
が指定されたPathIterator
の閉じた境界内にあるかどうかを判定します。
このメソッドは、Shape
インタフェースの実装者がShape.contains(Point2D)
メソッドのサポートを実装するための基本的な機能を提供します。
pi
- 指定されたPathIterator
p
- 指定されたPoint2D
PathIterator
の境界内にある場合はtrue
、そうでない場合はfalse
public final boolean contains(double x, double y)
Shape
の境界の内側にあるかどうかをテストします。public final boolean contains(Point2D p)
public static boolean contains(PathIterator pi, double x, double y, double w, double h)
PathIterator
の閉じた境界内にあるかどうかを判定します。
このメソッドは、Shape
インタフェースの実装者がShape.contains(double, double, double, double)
メソッドのサポートを実装するための基本的な機能を提供します。
このメソッド・オブジェクトは、指定された矩形領域がパス・セグメントと交差していて、そのセグメントがパスの内部領域と外部領域の間の境界を表さない場合にも、falseを返すことがあります。そのようなセグメントがWIND_NON_ZERO
屈曲規則を持つパスの一部である場合、またはセグメント・セット間に外部領域が存在しない2つのセグメント・セットが相殺されるようにセグメントが逆方向に再トレースされる場合、セグメントは完全にパスの内部領域側にある可能性があります。セグメントがパスの内部領域の実際の境界を表すかどうかを判断するには、パスのすべてのセグメントと屈曲規則に対する大量の計算が必要です。そのため、そのような判断はこの実装の範囲を超えています。
pi
- 指定されたPathIterator
x
- 指定されたX座標y
- 指定されたY座標w
- 指定された矩形領域の幅h
- 指定された矩形領域の高さPathIterator
に指定された矩形領域が含まれる場合はtrue
。それ以外の場合はfalse
。public static boolean contains(PathIterator pi, Rectangle2D r)
Rectangle2D
全体が指定されたPathIterator
の閉じた境界内にあるかどうかを判定します。
このメソッドは、Shape
インタフェースの実装者がShape.contains(Rectangle2D)
メソッドのサポートを実装するための基本的な機能を提供します。
このメソッド・オブジェクトは、指定された矩形領域がパス・セグメントと交差していて、そのセグメントがパスの内部領域と外部領域の間の境界を表さない場合にも、falseを返すことがあります。そのようなセグメントがWIND_NON_ZERO
屈曲規則を持つパスの一部である場合、またはセグメント・セット間に外部領域が存在しない2つのセグメント・セットが相殺されるようにセグメントが逆方向に再トレースされる場合、セグメントは完全にパスの内部領域側にある可能性があります。セグメントがパスの内部領域の実際の境界を表すかどうかを判断するには、パスのすべてのセグメントと屈曲規則に対する大量の計算が必要です。そのため、そのような判断はこの実装の範囲を超えています。
pi
- 指定されたPathIterator
r
- 指定されたRectangle2D
PathIterator
に指定されたRectangle2D
が含まれる場合はtrue
。それ以外の場合はfalse
。public final 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
オブジェクトより正確な幾何学的計算を実行するため、より的確な答えが必要な場合に使用できます。
このメソッド・オブジェクトは、指定された矩形領域がパス・セグメントと交差していて、そのセグメントがパスの内部領域と外部領域の間の境界を表さない場合にも、falseを返すことがあります。そのようなセグメントがWIND_NON_ZERO
屈曲規則を持つパスの一部である場合、またはセグメント・セット間に外部領域が存在しない2つのセグメント・セットが相殺されるようにセグメントが逆方向に再トレースされる場合、セグメントは完全にパスの内部領域側にある可能性があります。セグメントがパスの内部領域の実際の境界を表すかどうかを判断するには、パスのすべてのセグメントと屈曲規則に対する大量の計算が必要です。そのため、そのような判断はこの実装の範囲を超えています。
contains
、インタフェース: Shape
x
- 指定された矩形領域の左上隅のX座標y
- 指定された矩形領域の左上隅のY座標w
- 指定された矩形領域の幅h
- 指定された矩形領域の高さShape
の内部に、指定された矩形領域が完全に含まれる場合はtrue
、それ以外の場合、またはShape
に矩形領域が含まれ、intersects
メソッドがtrue
を返し、さらに負荷が大きすぎて包含の計算を実行できない場合はfalse
。Area
、Shape.intersects(double, double, double, double)
public final boolean contains(Rectangle2D r)
Shape
の内部に、指定されたRectangle2D
が完全に含まれるかどうかをテストします。Shape.contains()
メソッドを使用すると、次のような場合に、Shape
実装は内部的にfalse
を返すことができます。
intersect
メソッドがtrue
を返し、かつ
Shape
にRectangle2D
が完全に含まれるかどうかを判定するための計算の負荷が非常に大きい。
Shapes
によっては、Shape
にRectangle2D
が含まれている場合でもこのメソッドがfalse
を返すことがあります。Area
クラスは、ほとんどのShape
オブジェクトより正確な幾何学的計算を実行するため、より的確な答えが必要な場合に使用できます。
このメソッド・オブジェクトは、指定された矩形領域がパス・セグメントと交差していて、そのセグメントがパスの内部領域と外部領域の間の境界を表さない場合にも、falseを返すことがあります。そのようなセグメントがWIND_NON_ZERO
屈曲規則を持つパスの一部である場合、またはセグメント・セット間に外部領域が存在しない2つのセグメント・セットが相殺されるようにセグメントが逆方向に再トレースされる場合、セグメントは完全にパスの内部領域側にある可能性があります。セグメントがパスの内部領域の実際の境界を表すかどうかを判断するには、パスのすべてのセグメントと屈曲規則に対する大量の計算が必要です。そのため、そのような判断はこの実装の範囲を超えています。
contains
、インタフェース: Shape
r
- 指定されたRectangle2D
Shape
の内部にRectangle2D
が完全に含まれる場合はtrue
、それ以外の場合、またはShape
にRectangle2D
が含まれ、intersects
メソッドがtrue
を返し、さらに負荷が大きすぎて包含の計算を実行できない場合はfalse
。Shape.contains(double, double, double, double)
public static boolean intersects(PathIterator pi, double x, double y, double w, double h)
PathIterator
の内部が、指定された矩形座標セットの内部と交差するかどうかを判定します。
このメソッドは、Shape
インタフェースの実装者がShape.intersects(double, double, double, double)
メソッドのサポートを実装するための基本的な機能を提供します。
このメソッド・オブジェクトは、指定された矩形領域がパス・セグメントと交差していて、そのセグメントがパスの内部領域と外部領域の間の境界を表さない場合にも、trueを返すことがあります。セグメント・セット間に内部領域が存在しない2つのセグメント・セットが相殺されるようにセグメントのセットが逆方向に再トレースされる場合に、このような状態が発生することがあります。セグメントがパスの内部領域の実際の境界を表すかどうかを判断するには、パスのすべてのセグメントと屈曲規則に対する大量の計算が必要です。そのため、そのような判断はこの実装の範囲を超えています。
pi
- 指定されたPathIterator
x
- 指定されたX座標y
- 指定されたY座標w
- 指定された矩形座標の幅h
- 指定された矩形座標の高さPathIterator
と、指定された矩形座標セットの内部が互いに交差する場合はtrue
。それ以外の場合はfalse
。public static boolean intersects(PathIterator pi, Rectangle2D r)
PathIterator
の内部が、指定されたRectangle2D
の内部と交差するかどうかを判定します。
このメソッドは、Shape
インタフェースの実装者がShape.intersects(Rectangle2D)
メソッドのサポートを実装するための基本的な機能を提供します。
このメソッド・オブジェクトは、指定された矩形領域がパス・セグメントと交差していて、そのセグメントがパスの内部領域と外部領域の間の境界を表さない場合にも、trueを返すことがあります。セグメント・セット間に内部領域が存在しない2つのセグメント・セットが相殺されるようにセグメントのセットが逆方向に再トレースされる場合に、このような状態が発生することがあります。セグメントがパスの内部領域の実際の境界を表すかどうかを判断するには、パスのすべてのセグメントと屈曲規則に対する大量の計算が必要です。そのため、そのような判断はこの実装の範囲を超えています。
pi
- 指定されたPathIterator
r
- 指定されたRectangle2D
PathIterator
と、指定されたRectangle2D
の内部が互いに交差する場合はtrue
。それ以外の場合はfalse
。public final boolean intersects(double x, double y, double w, double h)
Shape
の内部が指定された矩形領域の内部と交差しているかどうかをテストします。Shape
の内部と指定された矩形領域の両方に含まれている点が存在する場合、その矩形領域はShape
と交差していると見なされます。
Shape.intersects()
メソッドを使用すると、次のような場合に、Shape
実装は内部的にtrue
を返すことができます。
Shape
が交差している可能性が高いが、
Shapes
によっては、矩形領域がShape
と交差していない場合でもこのメソッドがtrue
を返すことがあります。Area
クラスは、ほとんどのShape
オブジェクトより正確な、幾何学的な共通部分の計算を実行するため、より的確な答えが必要な場合に使用できます。
このメソッド・オブジェクトは、指定された矩形領域がパス・セグメントと交差していて、そのセグメントがパスの内部領域と外部領域の間の境界を表さない場合にも、trueを返すことがあります。セグメント・セット間に内部領域が存在しない2つのセグメント・セットが相殺されるようにセグメントのセットが逆方向に再トレースされる場合に、このような状態が発生することがあります。セグメントがパスの内部領域の実際の境界を表すかどうかを判断するには、パスのすべてのセグメントと屈曲規則に対する大量の計算が必要です。そのため、そのような判断はこの実装の範囲を超えています。
intersects
、インタフェース: Shape
x
- 指定された矩形領域の左上隅のX座標y
- 指定された矩形領域の左上隅のY座標w
- 指定された矩形領域の幅h
- 指定された矩形領域の高さShape
の内部と矩形領域の内部が交差しているか、またはどちらも交差している可能性が高いが、負荷が大きすぎて共通部分の計算を実行できない場合はtrue
、それ以外の場合はfalse
。Area
public final boolean intersects(Rectangle2D r)
Shape
の内部が指定されたRectangle2D
の内部と交差しているかどうかをテストします。Shape.intersects()
メソッドを使用すると、次のような場合に、Shape
実装は内部的にtrue
を返すことができます。
Rectangle2D
とShape
が交差している可能性が高いが、
Shapes
によっては、Rectangle2D
がShape
と交差していない場合でもこのメソッドがtrue
を返すことがあります。Area
クラスは、ほとんどのShape
オブジェクトより正確な、幾何学的な共通部分の計算を実行するため、より的確な答えが必要な場合に使用できます。
このメソッド・オブジェクトは、指定された矩形領域がパス・セグメントと交差していて、そのセグメントがパスの内部領域と外部領域の間の境界を表さない場合にも、trueを返すことがあります。セグメント・セット間に内部領域が存在しない2つのセグメント・セットが相殺されるようにセグメントのセットが逆方向に再トレースされる場合に、このような状態が発生することがあります。セグメントがパスの内部領域の実際の境界を表すかどうかを判断するには、パスのすべてのセグメントと屈曲規則に対する大量の計算が必要です。そのため、そのような判断はこの実装の範囲を超えています。
intersects
、インタフェース: Shape
r
- 指定されたRectangle2D
Shape
の内部と指定されたRectangle2D
の内部が交差しているか、またはどちらも交差している可能性が高いが、負荷が大きすぎて共通部分の計算を実行できない場合はtrue
、それ以外の場合はfalse
。Shape.intersects(double, double, double, double)
public final PathIterator getPathIterator(AffineTransform at, double flatness)
Shape
の境界に沿って反復し、Shape
の輪郭の幾何学的図形の平坦化されたビューへのアクセスを提供するイテレータ・オブジェクトを返します。
イテレータが返すのは、ポイント型SEG_MOVETO、SEG_LINETO、およびSEG_CLOSEだけです。
オプションのAffineTransform
が指定されると、反復処理で返される座標がそれに応じて変換されます。
曲線セグメントの分割の量は、平坦化されない変換を受けた曲線上の点が、返される平坦化されたパス・セグメントからもっとも離れる距離を指定するflatness
パラメータによって制御されます。平坦化された輪郭線の精度に対して予告なしに制限が加えられることがあり、この場合、非常に小さな平坦化パラメータが大きな値として扱われることがあります。この制限は、使用される特定の実装によって決まります。
このメソッドを呼び出すたびに、同時に使用されているほかのすべてのPathIterator
オブジェクトとは無関係に、Shape
オブジェクトの幾何学的図形をトラバースする新しいPathIterator
オブジェクトが返されます。
Shape
インタフェースを実装するオブジェクトにより、進行中の反復が、このような反復中に発生する可能性のある元のオブジェクトの幾何学的図形へのどのような変更からも切り離されることを推奨しますが、これは保証されません。
このクラスのイテレータは、マルチ・スレッドに対して安全ではありません。つまりこのPath2D
クラスでは、このPath2D
オブジェクトの幾何学的図形を変更すると、この幾何学的図形についてすでに進行中の反復処理に影響を及ぼす場合があります。
getPathIterator
、インタフェース: Shape
at
- 反復処理で返されるときに座標に適用されるオプションのAffineTransform
、または変換されていない座標が必要な場合はnull
flatness
- 曲線セグメントを近似するために使用されるライン・セグメントが、元の曲線上の任意の点から離れることができる最大の距離Shape
の幾何学的図形の平坦化されたビューを独立してトラバースする新しいPathIterator
。public abstract Object clone()
clone
、クラス: Object
OutOfMemoryError
- 十分なメモリーがない場合。Cloneable
バグまたは機能を送信
詳細なAPIリファレンスおよび開発者ドキュメントについては、Java SEのドキュメントを参照してください。そのドキュメントには、概念的な概要、用語の定義、回避方法、有効なコード例などの、開発者を対象にしたより詳細な説明が含まれています。
Copyright © 1993, 2016, Oracle and/or its affiliates. All rights reserved.Use is subject to license termsDocumentation Redistribution Policyも参照してください。