必须有#include<windows.h>
void color(short x) //设置颜色
{
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), x);
//SetConsoleTextAttribute()函数是一个API设置字体颜色和背景色的函数
}
然后通过调用color函数来控制控制台屏幕字体颜色。
其中:
color(0);
printf(“黑色\n”);
color(1);
printf(“蓝色\n”);
color(2);
printf(“绿色\n”);
color(3);
printf(“湖蓝色\n”);
color(4);
printf(“红色\n”);
color(5);
printf(“紫色\n”);
color(6);
printf(“黄色\n”);
color(7);
printf(“白色\n”);
color(8);
printf(“灰色\n”);
color(9);
printf(“淡蓝色\n”);
color(10);
printf(“淡绿色\n”);
color(11);
printf(“淡浅绿色\n”);
color(12);
printf(“淡红色\n”);
color(13);
printf(“淡紫色\n”);
color(14);
printf(“淡黄色\n”);
color(15);
printf(“亮白色\n”);
在0-15范围修改的是字体的颜色超过15改变的是文本背景色。
当然还有其它的颜色修改方式:如下(参考了百度百科对SetConsoleTextAttribute的解释)
---------------------------------------------------------分割线---------------------------------------------------------
SetConsoleTextAttribute是API设置控制台窗口字体颜色和背景色的函数。
原型定义:BOOL SetConsoleTextAttribute(HANDLE hConsoleOutput, WORD wAttributes);
GetStdHandle是一个Windows API函数。
语法:
HANDLE GetStdHandle( DWORD nStdHandle );
GetStdHandle()返回标准的输入、输出或错误的设备的句柄,也就是获得输入、输出/错误的屏幕缓冲区的句柄。
值:
nStdHandle
值为下面几种类型的一种:
值 | 含义 |
---|---|
STD_INPUT_HANDLE | 标准输入的句柄 |
STD_OUTPUT_HANDLE | 标准输出的句柄 |
STD_ERROR_HANDLE | 标准错误的句柄 |
wAttributes是用来设置颜色的参数
wAttributes | 颜色 | 对应的值 |
---|---|---|
FOREGROUND_BLUE | 字体颜色:蓝 | 1 |
FOREGROUND_GREEN | 字体颜色:绿 | 2 |
FOREGROUND_RED | 字体颜色:红 | 4 |
FOREGROUND_INTENSITY | 前景色高亮显示 | 8 |
BACKGROUND_BLUE | 背景颜色:蓝 | 16 |
BACKGROUND_GREEN | 背景颜色:绿 | 32 |
BACKGROUND_RED | 背景颜色:红 | 64 |
BACKGROUND_INTENSITY | 背景色高亮显示 | 128 |
也就是说SetConsoleTextAttribute函数是靠一个字节的低四来控制前景色,高四位来控制背景色。
#include <stdio.h>
#include <windows.h> //使用SetConsoleTextAttribute函数一定要加上windows.h
int main()
{
HANDLE color; //创建句柄
color=GetStdHandle(STD_OUTPUT_HANDLE); //设置句柄值 实例化句柄
SetConsoleTextAttribute(color,BACKGROUND_INTENSITY|BACKGROUND_BLUE|FOREGROUND_GREEN); //设置背景为高亮蓝色,暗绿色字体。但是用句柄名替换了参数
printf("这是暗绿色!\n");
system("pause"); //调用cmd暂停命令
}
根据此修改字体及背景颜色:
属性 | 含义 |
---|---|
FOREGROUND_BLUE | 文字颜色包含蓝色 |
FOREGROUND_GREEN | 文字颜色包含绿色 |
FOREGROUND_RED | 文字颜色包含红色 |
FOREGROUND_INTENSITY | 文字颜色加强 |
BACKGROUND_BLUE | 背景颜色包含蓝色 |
BACKGROUND_GREEN | 背景颜色包含绿色 |
BACKGROUND_RED | 背景颜色包含红色 |
BACKGROUND_INTENSITY | 背景颜色加剧 |
COMMON_LVB_LEADING_BYTE | 前导字节 |
COMMON_LVB_TRAILING_BYTE | 尾随字节 |
COMMON_LVB_GRID_HORIZONTAL | 顶部水平 |
COMMON_LVB_GRID_LVERTICAL | 左垂直 |
COMMON_LVB_GRID_RVERTICAL | 正确的垂直 |
COMMON_LVB_REVERSE_VIDEO | 反转前景和背景属性 |
COMMON_LVB_UNDERSCORE | 下划线 |
关于调色,网上有很多就不缀叙了。百度吧~~~
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),BACKGROUND_INTENSITY |FOREGROUND_INTENSITY | FOREGROUND_RED|BACKGROUND_RED | BACKGROUND_GREEN | BACKGROUND_BLUE);
puts("这是白色背景 红色字体");
根据十六进制修改字体及背景颜色:
颜色属性由两个十六进制数字指定: 第一个为背景,第二个则为前景。每个数字可以为以下任何值之一:
0 = 黑色 8 = 灰色
1 = 蓝色 9 = 淡蓝色
2 = 绿色 A = 淡绿色
3 = 湖蓝色 B = 淡浅绿色
4 = 红色 C = 淡红色
5 = 紫色 D = 淡紫色
6 = 黄色 E = 淡黄色
7 = 白色 F = 亮白色
参考链接:
来自一个初中生的技术贴
Consoles