色のグラディエーションをつけて塗りつぶす

JDK1.2 の新機能の Graphic2D によるレンダリング機能の実験です。 このページで紹介するソースのコンパイルと実行には JDK1.2Beta が必要です。

JDK1.2 から色のグラディエーションを付けるためのクラスが提供されています。 java.awt.geom.GradientPaint です。 ソースの基本部分は次のようになります。


/** 描画メソッド */

  public void paint( Graphics g ) {

       Point2D.Float point1, point2;
       Color color1, color2;
                    :
                    :
       Ellipse2D.Float elli = new Ellipse2D.Float(
                             125.0f, 10.0f, 250.0f, 480.0f );
       GradientPaint paint = new GradientPaint(
                      point1, color1, point2, color2, true );
       ((Graphics2D)g).setPaint( paint );
       ((Graphics2D)g).fill( elli );
  }

GradientPaintは Paintを実装したクラスです。 利用するには次のような手順になります。
  1. 図形のオブジェクトと GradientPaintのオブジェクトを生成する。
  2. Graphics2Dのオブジェクトに setPaint()メソッドで、 GradientPaintのオブジェクトを設定する。
  3. Graphics2Dのfill()メソッドで図形の内部を塗りつぶす。

新しいクラスについて簡単に解説しておきましょう。

サンプルのソース( GradientPaintTest.java )

このサンプルでは、 2つの端の点の位置をマウスのドラッグ操作で移動できるようにしてみました。 GradientPaintの設定が繰り返しを行うようになっていると、 端の点を移動することでグラディエーションの繰り返しを実現できます。 (コンストラクタの第5引数で指定する。)

     

GradientPaintの設定が繰り返しを行なわないようになっていると、 端の点を移動することでグラディエーションの幅を調整できます。 (端の点より外側はすべて指定された色になる。)