ITEEDU

第三章 基本图形函数

第三节 屏幕颜色的设置和清屏函数

对于图形模式的屏幕颜色设置,同样分为背景色的设置和前景色的设置。在Turbo C中分别用下面两个函数:

  • 设置背景色: void far setbkcolor(int color); 
  • 设置作图色: void far setcolor(int color); 

其中color 为图形方式下颜色的规定数值,对EGA,VGA显示器适配器,有关颜色的符号常数及数值见下表所示。

有关屏幕颜色的符号常数表

 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
   符号常数   数值   含义                 符号常数      数值    含义
   ──────────────────────────────
   BLACK       0     黑色                 DARKGRAY       8      深灰
   BLUE        1     兰色                 LIGHTBLUE      9      深兰
   GREEN       2     绿色                 LIGHTGREEN    10      淡绿
   CYAN        3     青色                 LIGHTCYAN     11      淡青
   RED         4     红色                 LIGHTRED      12      淡红
   MAGENTA     5     洋红                 LIGHTMAGENTA  13      淡洋红
   BROWN       6     棕色                 YELLOW        14      黄色 
   LIGHTGRAY   7     淡灰                 WHITE         15      白色
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

对于CGA适配器,背景色可以为表3中16种颜色的一种,但前景色依赖于不同的调色板。共有四种调色板,每种调色板上有四种颜色可供选择。不同调色板所对应的原色见下表。 

CGA调色板与颜色值表:

 ━━━━━━━━━━━━━━━━━━━━━━━
   调色板        颜色值   
───────────────────────
   符号常数  数值   0        1     2     3
   ━━━━━━━━━━━━━━━━━━━━━━
    C0        0    背景      绿    红    黄
    C1        1    背景      青   洋红   白
    C2        2    背景      淡绿 淡红   黄
    C33       3    背景      淡青 淡洋  红白
   ━━━━━━━━━━━━━━━━━━━━━━

清除图形屏幕内容使用清屏函数,其调用格式如下: 

 voide far cleardevice(void); 

有关颜色设置、清屏函数的使用请看例8:

#include<stdio.h>
#include<graphics.h>
int main()
{
	int gdriver, gmode, i;
	gdriver=DETECT;
	initgraph(&gdriver, &gmode, "c:\\caic\\bgi"); /*图形初始化*/
	setbkcolor(0); /*设置图形背景*/
	cleardevice();
	for(i=0; i<=15; i++)
	{
		setcolor(i); /*设置不同作图色*/
		circle(320, 240, 20+i*10); /*画半径不同的圆*/
		delay(100); /*延迟100毫秒*/
	}
	for(i=0; i<=15; i++)
	{
		setbkcolor(i); /*设置不同背景色*/
		cleardevice();
		circle(320, 240, 20+i*10);
		delay(100);
	}
	closegraph();
	return 0;
}

另外,TURBO C也提供了几个获得现行颜色设置情况的函数。 

  • int far getbkcolor(void); 返回现行背景颜色值。
  •  int far getcolor(void); 返回现行作图颜色值。
  •  int far getmaxcolor(void); 返回最高可用的颜色值。