9.5 色を指定する関数
newpen 16色から色を選ぶ
newpen(win, n)
n は整数型。色番号は 0:黒 1:白 2:赤 3:緑 4:青 5:シアン 6: マゼンタ 7:黄 8:灰色(暗) 9:灰色 10:赤(暗) 11:緑(暗) 12:青(暗) 13:シアン(暗) 14:マゼンタ(暗) 15:黄(暗) が用意されている。16 以上はすべて 15 と同じとみなされる。
newrgbcolor 自由な色を指定する
newrgbcolor(win, r, g, b)
r, g, b はいずれも整数型。それぞれ red, blue, green を意味し、0〜255 までの数値で各色の発色度合いを設定することで、合計 1600 万色の色が出せる。具体的に赤色の長方形を描く場合は以下のようにする。(つまり赤が最大発色で他が最低発色となるよう指定している。)
r=255; g=0; b=0; newrgbcolor(win, r,g,b); fillrect(win, 100.0, 100.0, 50.0, 50.0);
うまくプログラミングすることで、かなりなめらかな色の変化も出せます。
R, G, B の数値をつけた色見本を表示する以下のプログラムをつけておきますので実行して参考にして下さい。
#include <eggx.h> #include <stdlib.h> int main() { int win, r, g, b; double x,y,h,w,xx,yy; win=gopen(960,600); /* 描画ウィンドウを開く */ winname(win, "rgb"); /* 名前をつける */ h=23.0; w=40.0; x=10.0; y=50.0; /* 6 段階ずつに区切る */ for(r=0;r<6;r++) { /* 赤 */ for(g=0;g<6;g++) { /* 緑 */ for(b=0;b<6;b+=2) { /* 青 */ newrgbcolor(win, r*51, g*51, b*51); xx=x+(r+b*3)*w*1.3; yy=y+g*h*2; fillrect(win, xx, yy, w, h); newrgbcolor(win, 100,100,100); drawstr(win,xx,yy-10,7,0,"%3i,%3i\n ,%3i",r*51,g*51,b*51) ; newrgbcolor(win, r*51, g*51, (b+1)*51); xx=x+(r+b*3)*w*1.3; yy=y+(g+6)*h*2; fillrect(win, xx, yy, w, h); newrgbcolor(win, 100,100,100); drawstr(win,xx,yy-10,7,0,"%3i,%3i\n ,%3i",r*51,g*51,(b+1)*51) ; } } } ggetch(); gclose(win); return 0; }
(実行結果)
gsetbgcolor 背景色を変える
gsetbgcolor(win, color)
color は色名。gsetbgcolor(win, "White") などとして使います。gsetbgcolor( ) 関数を呼び出しただけでは背景色は変わりません。その後に gclr(win) を実行することで背景の塗り直しが行われ、指定した色になります。(つまり gsetbgcolor( ) 関数は「次回の gclr( ) 関数の塗りつぶし色を決める」ものだと考えればよいでしょう。)
指定できる色の名前のうち代表的なものを以下に示しておきます。 [1]
snow ivory seashell honeydew MintCream azure lavender MistyRose white black DimGrey grey LightGrey MidnightBlue navy MediumBlue RoyalBlue blue SkyBlue turquoise cyan aquamarine DarkGreen SeaGreen green GreenYellow LimeGreen OliveDrab yellow chocolate brown salmon orange DarkOrange coral LightCoral tomato OrangeRed red HotPink DeepPink pink LightPink magenta violet plum orchid purple
gclr() 関数 も参照。