Javaでは、色の指定にwhite やblack など色の名前を使う他、RGBの各要素を直接0ー255(あるいは0ー1)の数値として指定する事も出来ます。今回は、その指定法を試すためにグラテーションを描いてみる事にしました。

グラテーション

 グラテーションを描く方法はごく単純で、単に色を少しづつ変えながら適当な図形を描いていけば良いですね。今回は、長さ256ドット、幅1ドットの線を描いていきましょう。これをずらしながら256個重ねれば256*256ドットの正方形グラテーションを描く事が出来ます。
 グラテーションの形式は、単色で明るさを変えていくものとし、色のスケールも赤・緑・青・紫・グレースケールの中から選べるようにしてみました。色のスケールに応じて指定するRGBの要素を変え、指定する各要素は、中央が255、上下の両端が0になります。

 グラフィック描画用の色を指定するには、RGB各要素を指定してColor オブジェクトを作り、それをグラフィックオブジェクトのsetColor(Color)メッソドに渡してやります。例えばpaint メソッド内で、

  g.setColor(new Color(255,0,0));

 とやると、描画色は赤に設定されるわけです。このようにして、要素を指定しながら線を引いていけばグラテーションが描けますね。

イメージを使ったちらつき防止(ダブルバッファ)

 ただグラテーションを描くだけではつまらないので、画面の中でボールを動かしてみましょう。ボールの色も、時間の変化とともに変わっていくようにしました。

 プログラムを見てみると、背景用のイメージの他にもう一枚イメージを用意し、そこに背景とボールを描き込んでいるのがわかると思います。描くだけならpaint()メソッド内で背景、ボールの順に直接画面に書いても良いのですが、現在表示されている画面を直接描き換えるとちらついてしまうので、まずイメージに描くようにしました。これはダブルバッファと呼ばれる方法で、画面を変更する時は直接画面に描くのではなく、別に専用の場所(Javaの場合はイメージが良いでしょう)を用意して、まずそこに表示する画面を描いてからその画面を表示画面に転送するようにすると、ちらつきを抑える事が出来ます。
 ボールを直接画面に描き込むプログラムも用意しましたので、比べてみてください。

イメージに描画画面に直接描画
プログラムソース表示プログラムソース表示

戻る