Previous: ウィンドウの生成と階層構造
Up: Xウィンドウ・プログラミング
第3回 ウィンドウの階層構造とカラーの操作のまとめ

Next: 新しい関数
Previous Page: 配列の利用
Next Page: 新しい関数

色を名前で指定する

Xウィンドウで色を使うためには、まず色のデータを XColor構造体に記憶させます。 その後で指定する色をカラーマップから取り出す、という手順が必要でした。
前回は色を指定するのに RGB の三原色のデータを直接与えました。 この方法の他に色の名前を使って指定することもできます。 (色の名前はあらかじめシステムに登録されています。 全部で約700色ほど用意されています。) 関数は XAllocNamedColor() を使用します。

Display *dsp;              /* ディスプレイ構造体の宣言 */
 Colormap cmap;             /* カラーマップの宣言 */
 XColor   iro, dummy;       /* カラー構造体の宣言 */

/* カラーマップから色を得る */ XAllocNamedColor( dsp, cmap, "red", &iro, &dummy );


このように名前さえ指定すれば、 RGB のデータは自動的に 設定され、プログラムの中でいちいち与える必要はありません。 ただし最後の引数の dummy のように余分な XColor構造体が必要な点に注意して ください。 これは、正確な色がカラーマップになかった場合 その RGBデータを記憶するための変数です。 きちんとしたプログラムにしたいなら、 この内容をチェックするべきです。 ただし、たいていの場合は参照する必要はないでしょう。
色を多数利用する場合には、やはり配列を用意するといいでしょう。
Display *dsp;              /* ディスプレイ構造体の宣言 */
 Colormap cmap;             /* カラーマップの宣言 */
 XColor   iro[4], dummy;    /* カラー構造体の宣言 */
 int   i;
 static char *cname[] = { "red", "green", "blue", "yellow" };

/* カラーマップから色を得る */ for( i=0 ; i<4 ; i++ ) XAllocNamedColor( dsp, cmap, cname[i], &iro[i], &dummy );

maruyama@wakhok.ac.jp
1995年02月01日 (水) 00時21分18秒 JST