控制台颜色

来源:互联网 发布:超薄笔记本 知乎 编辑:程序博客网 时间:2024/04/30 06:16
可以用第二种方法改变部分字体的背景和颜色。

1. 全局设置
   会改变整个窗口所有字体的背景和颜色。
   system("color 04");
   第一个数字代表背景色,第二个数字代表前景色。各颜色的代码如下:
0=黑色
1=蓝色
2=绿色
3=湖蓝色
4=红色
5=紫色
6=黄色
7=白色
8=灰色
9=淡蓝色
A=淡绿色
B=淡浅绿色
C=淡红色
D=淡紫色
E=淡黄色
F=亮白色

2. 改变下一个输出字体的背景和颜色
   include
   BOOL SetConsoleTextAttribute(HANDLE hConsoleOutput, WORD wAttributes);
   hConsoleOutput: 设备句柄,通过GetStdHandle(STD_OUTPUT_HANDLE)获取。
   wAttributes: 颜色属性

FOREGROUND_BLUE字体颜色:蓝1FOREGROUND_GREEN字体颜色:绿2FOREGROUND_RED字体颜色:红4FOREGROUND_INTENSITY前景色高亮显示8BACKGROUND_BLUE背景颜色:蓝16BACKGROUND_GREEN背景颜色:绿32BACKGROUND_RED背景颜色:红64BACKGROUND_INTENSITY背景色高亮显示128

   也就是说SetConsoleTextAttribute函数是靠一个字节的低四位控制前景色,高四位控制背景色。

例如白底红字可以写成:
    SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),BACKGROUND_INTENSITY |FOREGROUND_INTENSITY | FOREGROUND_RED|BACKGROUND_RED | BACKGROUND_GREEN | BACKGROUND_BLUE);
也可以写成:
    SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),0xFC);

其他的颜色:
White on Black:
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY
| FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE);
Red on Black:
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY
|FOREGROUND_RED);
Green on Black:
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY
| FOREGROUND_GREEN);
Yellow on Black:
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY
|FOREGROUND_RED | FOREGROUND_GREEN);
Blue on Black:
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY
|FOREGROUND_BLUE);
Magenta on Black:
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY
|FOREGROUND_RED | FOREGROUND_BLUE);
Cyan on Black:
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY
|FOREGROUND_GREEN | FOREGROUND_BLUE);
Black on White:
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),BACKGROUND_INTENSITY
|FOREGROUND_INTENSITY | BACKGROUND_RED | BACKGROUND_GREEN | BACKGROUND_BLUE);
Red on White:
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),BACKGROUND_INTENSITY
|FOREGROUND_INTENSITY | BACKGROUND_RED | BACKGROUND_GREEN | BACKGROUND_BLUE
|FOREGROUND_RED);

例子:
#include
#include

int main()
{
    HANDLE handle;

    HANDLE = GetStdHandle(STD_OUTPUT_HANDLE);
    SetConsoleTextAttribute(handle, FOREGROUND_INTENSITY | FOREGROUND_RED);//设置为红色
    printf("这是红色\n");
    SetConsoleTextAttribute(handle, FOREGROUND_INTENSITY);//恢复默认的灰色
    printf("这是灰色\n"); 

    getch();
    return 0;
}

0 0
原创粉丝点击