7-1 節では色の指定に clBlue という色定数を用いました。その他の代表的な色定数としては次のようなものがあります。
値 | 色 |
---|---|
clAqua | 空色 |
clBlack | 黒色 |
clBlue | 青色 |
clGray | 灰色 |
clGreen | 緑色 |
clMaroon | 栗色 |
clNavy | 濃紺色 |
clPurple | 紫色 |
clRed | 赤色 |
clWhite | 白色 |
clYellow | 黄色 |
clBtnFace | ボタン面の色 |
これら色定数を用いれば Image コンポーネント (の Canvas プロパティ) 上のピクセルの色を指定する事ができます。ところがここで、「この程度の色数では CG 描画に不充分なのでは?」と疑問を持った人がいるのではないでしょうか? 色定数は上の表以外にも30種類ほどありますが、それでも不充分である事には変わりありません。例えば青色と赤色を適当に混ぜた中間色を用いる事はできません。しかし、もちろんその心配はありません。実は Delphi には TColor 型という、色を指定するための特別の型が用意されています。これは、16進数で色を表す型です。
説明は後回しにして前節の練習問題のプログラムを次のように修正してください。
procedure TForm1.ButtonDrawClick(Sender: TObject); begin ImageField.Canvas.Pixels[10, 20] := $00000000; end;
作成したら実行してみましょう。Image上には、どんな色の点が現れましたか? また、プログラム中の「$00000000」の部分を次のものに変更し、どんな色の点が現れるか確認してください。
(1) $00FF0000 (2) $0000FF00 (3) $000000FF解説
TColor型の数は、上で用いた通り16進数の8桁の数値からなり、下から2桁ずつが、それぞれ赤、緑そして青の輝度に対応します。ここに$記号は16進数であることを表す記号です。
上の例では、青が「FF (最大)」、緑が「00 (なし)」、赤が「00 (なし)」なので、純粋な青を表しています。これを「$00FF00FF」などとすると、青だけでなく赤も「FF (最大)」になるので紫になります。この調子でそれぞれの色をうまく混ぜると綺麗な中間色も作ることができます。中間色の定義の仕方については次のコラムを参照してください。
自分で適当な中間色を定義する際には、「スタート」→「プログラム」→「アクセサリ」→「ペイント」を使うと便利です。ペイントを起動した後、「色」→「色の編集」で色を選ぶ画面が出てきます。そこで「色の作成」ボタンを押すと、中間色をピックアップできます。
好きな色をピックアップすると、画面の右下に赤・緑・青それぞれの輝度の値が出てくるので、これを16進数に直すと Delphi でも同じ色が使えます。例えば上の例の場合、青が「238」、緑が「254」、赤が「188」であるので、「$00EEFEBC」となります (淡い青緑色です)。
このように、赤、緑そして青の輝度を指定する事により、256×256×256色の指定が可能になります。しかし、単純な青を表すために「$00FF0000」などと一々書くのは不便です。そこで、Delphi では、青などの様によく使う色に限って「clBlue」という名前を割り当てているのです。これが色定数の"正体"です。ですからプログラム上は「$00FF0000」と「clBlue」は同一です。
色定数の一覧については Delphi のヘルプメニューから「TColor型」を引くと、そこにまとめられています。あるいは、フォームなどColorプロパティを持つコンポーネントのオブジェクトインスペクタにおいて Color プロパティ欄をダブルクリックすることで、次のように表示されます。