C/C++ 控制台输出彩色文本(改变局部字体的颜色) | 您所在的位置:网站首页 › c语言输出颜色代码 › C/C++ 控制台输出彩色文本(改变局部字体的颜色) |
我写了一个输出彩色文本的函数: void COLOR_PRINT(const char* s, int color) { HANDLE handle = GetStdHandle(STD_OUTPUT_HANDLE); SetConsoleTextAttribute(handle, FOREGROUND_INTENSITY | color); printf(s); SetConsoleTextAttribute(handle, FOREGROUND_INTENSITY | 7); }开头需要添加引用: #include #include颜色代号: 0 = 黑色 8 = 灰色 1 = 蓝色 9 = 淡蓝色 2 = 绿色 10 = 淡绿色 3 = 浅绿色 11 = 淡浅绿色 4 = 红色 12 = 淡红色 5 = 紫色 13 = 淡紫色 6 = 黄色 14 = 淡黄色 7 = 白色 15 = 亮白色 如果颜色代号大于15,字体颜色就会呈周期性循环,而底色会按颜色代号的顺序进行更换。 比如说,0字体是黑色,底色也是黑色(0),16字体是黑色,底色是蓝色(1),32也是黑色,对应底色是绿色(2),依次类推。这是 因为SetConsoleTextAttribute函数是通过一个字节的低4位(16种颜色,2的4次方)控制前景色(字体颜色),高四位控制背景颜色,而本该是四位前景色如果大于15多出来的位数就会溢出到高四位,进而改变了背景色。 那么我们就可以稍微改动一下,让背景色代号乘16(放到高位)后再和前景色代号逻辑或,就可以用两个0-15的颜色代号分别控制前景色和背景色了,改动后的函数如下: void COLOR_PRINT2(const char* s, int front_color,int back_color) { HANDLE handle = GetStdHandle(STD_OUTPUT_HANDLE); SetConsoleTextAttribute(handle, BACKGROUND_INTENSITY | back_color*16 |FOREGROUND_INTENSITY | front_color); printf(s); SetConsoleTextAttribute(handle, FOREGROUND_INTENSITY | 7); } |
CopyRight 2018-2019 实验室设备网 版权所有 |