C/C++ 控制台输出彩色文本(改变局部字体的颜色) 您所在的位置:网站首页 c语言输出颜色代码 C/C++ 控制台输出彩色文本(改变局部字体的颜色)

C/C++ 控制台输出彩色文本(改变局部字体的颜色)

2024-06-02 10:22| 来源: 网络整理| 查看: 265

我写了一个输出彩色文本的函数:

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 实验室设备网 版权所有