モジュール java.desktop
パッケージ java.awt

クラスRadialGradientPaint

java.lang.Object
java.awt.MultipleGradientPaint
java.awt.RadialGradientPaint
すべての実装されたインタフェース:
Paint, Transparency

public final class RadialGradientPaint extends MultipleGradientPaint
RadialGradientPaintクラスは、形状を色の円放射状グラデーション・パターンで塗りつぶす方法を提供します。 ユーザーはグラデーションの色を2色以上指定でき、この場合の描画では、各色の間の補間が行われます。

ユーザーは、グラデーション・パターンを制御する円を指定する必要があります。この円は、中心点と半径で記述されます。 その円内にある別の焦点を指定することもできます。焦点は、グラデーションの最初の色の位置を制御します。 デフォルトでは、焦点は、円の中心に設定されます。

この描画は、グラデーションの最初の色を焦点にマップし、最後の色を円周にマップして、その間にあるユーザーが指定した色についてはなめらかに補間します。 そのため焦点から円周へと描画されるあらゆる線は、すべてのグラデーションの色を横断します。

焦点を円の半径の外側に指定すると、その焦点の方向にある円周のすぐ内側の点に、グラデーション・パターンの輪の中心が配置されます。 描画では、この変更後の位置を、指定された焦点として内部的に使用します。

ユーザーは、グラデーションでの色の分布方法を指定するfloat配列を指定する必要があります。 これらの値は0.0 - 1.0の範囲内にあって、グラデーションに沿ったキー・フレームのように機能する必要があります。これらの値によって、グラデーションを厳密に特定の色にする位置をマークします。

ユーザーが最初のキー・フレーム値を0に設定しない場合や、最後のキー・フレーム値を1に設定しない場合は、キー・フレームがその位置に作成され、最初の色や最後の色がその位置に複製されます。 そのため、ユーザーがグラデーションを構築するために次の配列を指定した場合、

     {Color.BLUE, Color.RED}, {.3f, .7f}
 
これは、次のキー・フレームを持つグラデーションに変換されます。
     {Color.BLUE, Color.BLUE, Color.RED, Color.RED}, {0f, .3f, .7f, 1f}
 

ユーザーは、CycleMethodREFLECTIONまたはREPEATに設定することによって、円の半径の外側の領域を塗りつぶすときにRadialGradientPaintオブジェクトで実行される動作を選択することもできます。 グラデーションの色の比率は、焦点から引かれたどの直線でも等しくなります。 次の図は、距離ABが距離BCと等しく、距離ADが距離DEと等しいことを示しています。

距離AB=BCおよびAD=DEを示すイメージ

グラデーションおよびグラフィックス・レンダリング変換が均一にスケーリングされる場合、ユーザーが焦点を円の中心に一致するように設定すると、グラデーションの色の比率は、中心から引かれたどの直線でも等しくなります。 次の図は、距離AB、BC、AD、およびDEを示しています。 これらはすべて等しくなります。

AB、BC、ADおよびDEの距離がすべて等しいことを示すイメージ

ピクセルの粒度でのサンプリングのために、間隔にわずかな変動がいくつか発生する可能性があることに注意してください。 サイクル・メソッドが指定されていない場合、NO_CYCLEがデフォルトで選択されます。つまり、最後のキー・フレームの色が残りの領域を塗りつぶすために使用されます。

colorSpaceパラメータでは、補間が実行されるカラー・スペース(デフォルトのsRGBまたは線形化されたRGB)を指定できます。

次のコードは、中心点と焦点が同一の場合のRadialGradientPaintの一般的な使い方を示しています。

     Point2D center = new Point2D.Float(50, 50);
     float radius = 25;
     float[] dist = {0.0f, 0.2f, 1.0f};
     Color[] colors = {Color.RED, Color.WHITE, Color.BLUE};
     RadialGradientPaint p =
         new RadialGradientPaint(center, radius, dist, colors);
 

3つの循環方法のそれぞれについて、焦点がデフォルトの(中心点に合わされた)ときの上記のコード例の結果は次のイメージのようになります。

サンプル・コードの出力を示すイメージ

次のコードのように、中心点に合わされていない焦点を指定することもできます。

     Point2D center = new Point2D.Float(50, 50);
     float radius = 25;
     Point2D focus = new Point2D.Float(40, 40);
     float[] dist = {0.0f, 0.2f, 1.0f};
     Color[] colors = {Color.RED, Color.WHITE, Color.BLUE};
     RadialGradientPaint p =
         new RadialGradientPaint(center, radius, focus,
                                 dist, colors,
                                 CycleMethod.NO_CYCLE);
 

3つの循環方法のそれぞれについて、焦点が中心点に合わされていないときの上記のコード例の結果は次のイメージのようになります。

サンプル・コードの出力を示すイメージ

導入されたバージョン:
1.6
関連項目: