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