Colorと色の指定
簡単な図形は描画できるようになりましたが、何かが足りませんね。そう、それは「色」です。モノクロだけの表示ではどうも面白くありません。そこで、色をつけてみることにしましょう。先ほどのpaintメソッドを以下のように修正してみてください。
public void paint(Graphics g){
g.setColor(Color.RED);
g.fillRect(0,50,300,200);
g.setColor(Color.BLUE);
g.drawRect(10,60,280,180);
g.drawRect(20,70,260,160);
g.setColor(Color.GREEN);
g.fillOval(100,100,100,100);
}
先ほどのサンプルに色をつけたもの。目がチカチカしますね……。 |
なんか、ものすごい色使いになってしまいましたが、あくまでサンプルということで我慢してください。ここでは「setColor」というものを使っていますね。これが、色を設定するためのメソッドです。Graphicsでは、「描画に用いる色」の情報というのを内部に保持しており、描画の際にはその色を使って図形を描きます。このsetColorは、描画用の色を変更する働きをするものです。
では、これで設定する色の値はどうするのでしょう。これは、java.awtパッケージに用意されている「Color」クラスを使います。これは色の値を示すために用意されたクラスで、このインスタンスをsetColorで設定すれば、好きな色に変更できるというわけです。
今回は「Color.RED」「Color.BLUE」「Color.GREEN」といったものが指定されていますね。これは、Colorクラスにあらかじめ用意されているフィールド(覚えてますか? クラスに用意されている、いつでも利用できる変数みたいなものでしたね)を指定していたのです。Colorクラスの中には、よく使われる色のインスタンスがフィールドとして用意されています。「Color.色の名前」というようにしてそれらのフィールド名を指定すれば、その色を使えるのですね。
もちろん、用意されているのは主な色だけですから、もっと微妙な色を使いたければ、新たにColorインスタンスを作って利用することになります。インスタンスは、newというものを使って作るのでしたね。Colorの場合は、このnewのときに、作成する色に関する設定値を引数に指定するのが一般的です。では、new Colorを使ったサンプルをあげておきましょう。
public void paint(Graphics g){
int x = 0;
int y = 50;
for (int i = 0;i < 10;i++){
Color c = new Color(i * 25,0,250 - i * 25,100);
g.setColor(c);
g.fillRect(x,y,150,100);
x += 15;
y += 10;
}
}
Colorインスタンスを作って少しずつ色が変化するようにしたサンプルです。 |
paintメソッドを書き換えて実行してみて下さい。青から赤へとグラディエーションするように長方形が描かれていきます。ちょっとColorを使うだけで、こんなきれいな図形が作れてしまうんですね。ここでは、Colorの値をRGBAという4つの値で指定する形でインスタンス作成をしています。
Color 変数 = new Color(赤, 緑, 青);
Color 変数 = new Color(赤, 緑, 青,アルファ);
この2通りの書き方が、もっとも一般的でしょう。それぞれ赤・緑・青の3原色の輝度を0~255までの整数で指定します。0がなし、255が最大となります。「アルファ」というのはアルファチャンネルといって、色の透明度などを指定するのに用いられる値で、やはり0~255の整数で指定します。この値を設定すると半透明で図形を描くことができるようになります。
図形の描画は、実際に思う通りに描けるようになってくるとなかなか楽しいものです。サンプルのように、繰り返しなどを使って計算によって図形を描かせたりすると、想像もしてなかったような効果を得られることもあります。それぞれで試してみると面白いでしょう。
バックナンバー
はじめてのJava(1)「Javaを手に入れよう」はじめてのJava(2)「環境変数をマスターする」
はじめてのJava(3)「Javaのプログラムを動かそう」
はじめてのJava(4)「mainメソッドを使おう」
はじめてのJava(5)「制御文を使おう」
はじめてのJava(6)「クラスとインスタンスをマスターしよう」
はじめてのJava(7)「AWTのコンポーネントを使おう」
はじめてのJava(8)「イベント処理の仕組みを理解する」
はじめてのJava(9)「アプリケーションを作ろう」