VGA カラー・パレット

VGA マシンでは,一度にたかだか 256 色しか表示することができません。QuickWin は VGA モニタと,256 色を使用するように設定されたより高度なモニタをサポートします。コントロール・パネルでディスプレイに対して設定された現在の色数とは無関係に,内部的には 256 色 (またはそれ以下) のカラー・パレットしかサポートされません。VGA パレットに色をいくつ選択するかはアプリケーションに依存し,その設定は,SETWINDOWCONFIG を使って windowconfig 構造型の wc%numcolors 変数に 2,16,または 256 を設定することによって行われます。

VGA グラフィック・ディスプレイで特定の RGB 色値を使用するためには,その色値がパレットに含まれていなくてはなりません。基本色を変更し,カラー・パレットをカスタマイズするには,REMAPPALETTERGB を使ってパレット色指標を任意の RGB 色値に変更します。次の例は,色指標 1 (基本設定では青色) を,RGB 値 #0000FF を使って純粋な赤の色値に再マップしています。この例を実行した後では,それまで青で表示されていたものがすべて赤で表示されます。

	USE DFLIB
	INTEGER(4) status
	status = REMAPPALETTERGB( 1, #0000FF )	! 色指標 1 を RGB 赤に再定義

REMAPALLPALETTERGB は,1 つまたは複数の色指標を同時に再マップします。その引数は,パレットにマップされる RGB 色値の配列です。配列中の第 1 色番号が色指標 0 に関連付けられた新しい色になり,第 2 色番号が色指標 1 に関連付けられた新しい色となります (以下同様)。20 個の指標はシステム用に予約されているので,最高 236 個の指標をマップすることができます。

パレットに含まれていない RGB 色を要求すると,要求した RGB 色に最も近い色がパレットから選択されます。その RGB 色が REMAPPALETTERGB または REMAPALLPALETTERGB によってパレットに追加されていた場合,正確な RGB 色が使えることになります。

パレットの再マップは,SETCOLOR などの色指標関数を使ってパレットを使うように指定していない限り,64K 色のマシン,SVGA,または True Color マシンには影響を与えません。VGA マシンで,パレット内の全色を再マップし,そのパレットをグラフィックス内で表示している場合,第 2 パレットを再マップして,同時に表示することはできません。

たとえば,VGA の 256 色モードで,256 個のパレット色をすべて再マップし,1 つの子ウィンドウでグラフィックスを表示した後に,別の子ウィンドウを開き,パレットを再マップして,第 2 子ウィンドウでグラフィックスを表示すると,256 色よりも多くの色を同時に表示しようとしていることになります。マシンはこのようなことはできないので,フォーカスを持っている子ウィンドウが正しく表示され,フォーカスのない子ウィンドウの色は変化します。


注意:256 色よりも多くの色をサポートしているマシンは,パレットの再マップによってアニメーションを行うことができません。Windows オペレーティング・システムはビデオ・ハードウェア・パレットにマップされる論理パレットを作成します。256 色以下のパレットをサポートしているビデオ・ハードウェアでは,パレットを再マップすると現在のパレットが上書きされ,画面が新しい色で再描画されます。

256 色よりも多くの色をサポートする大きなハードウェア・パレットでは,再マップはパレットの未使用の部分に対して行われます。現在の色への上書きが行われるわけではなく,画面の再描画も行われません。したがって,大きなパレット (256 色よりも多くの色) を使用するマシンでは,再マップを使って画面を変更するパレット・アニメーションと呼ばれるテクニックは使用できません。詳細については,『Platform SDK』オンライン・ドキュメントを参照してください。

グラフィックス・モジュールには,基本色番号のシンボル定数 (名前) が用意されています。これらにはわかりやすい名前が付けられています。たとえば,黒,黄色,および赤の色番号は,$BLACK$YELLOW,および $RED というシンボル定数で表現されています。