随笔 - 0  文章 - 22 评论 - 0 阅读 - 1280
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

Windows控制台颜色

windows控制台中使用COLOR命令设置颜色,使用 COLOR -h 查看具体颜色值。

颜色说明

终端的颜色使用1个字节表示,高4位表示背景色,低4位表示前景色。颜色值范围为0-F,共16种颜色,分别为:

0 = 黑色 8 = 灰色
1 = 蓝色 9 = 淡蓝色
2 = 绿色 A = 淡绿色
3 = 浅绿色 B = 淡浅绿色
4 = 红色 C = 淡红色
5 = 紫色 D = 淡紫色
6 = 黄色 E = 淡黄色
7 = 白色 F = 亮白色

背景色和前景色可以互相搭配,比如蓝色背景,淡黄色文字表示为0x1D。

颜色示例

  • 命令提示符

命令提示符

  • WindowsTerminal终端
    WindowsTerminal终端
    由于 WindowsTerminal终端可以自定义配色方案,因此显示的颜色与旧版的命令提示符显示的会有不同。

编程设置控制台颜色

使用Windows控制台API函数SetConsoleTextAttribute设置控制台颜色。

BOOL WINAPI SetConsoleTextAttribute(
_In_ HANDLE hConsoleOutput,
_In_ WORD wAttributes
);
参数
hConsoleOutput [进]
控制台屏幕缓冲区的句柄。 该句柄必须具有 GENERIC_READ 访问权限。
wAttributes [in]
字符属性。

上面函数中要用到控制台句柄,使用Windows控制台API函数GetStdHandle获取控制台句柄。

GetStdHandle 函数
HANDLE WINAPI GetStdHandle(
_In_ DWORD nStdHandle
);
参数
nStdHandle [进]
标准设备。 此参数的取值可为下列值之一:
值 含义
STD_INPUT_HANDLE((DWORD)-10) 标准输入设备。 最初,这是输入缓冲区 CONIN$ 的控制台。
STD_OUTPUT_HANDLE((DWORD)-11) 标准输出设备。 最初,这是活动控制台屏幕缓冲区 CONOUT$。
STD_ERROR_HANDLE((DWORD)-12) 标准错误设备。 最初,这是活动控制台屏幕缓冲区 CONOUT$。

代码

上面图片中各种颜色的实现代码

#include <stdio.h>
#include <windows.h>
//更改颜色
// color为每一种颜色所代表的数字,范围是0~15
void setColor(WORD color)
{
HANDLE HOutput = GetStdHandle(STD_OUTPUT_HANDLE); //获取标准输出的句柄
SetConsoleTextAttribute(HOutput, color); //设置颜色
}
int main()
{
char *CLRNAME[] = {
"黑色",
"蓝色",
"绿色",
"浅绿色",
"红色",
"紫色",
"黄色",
"白色",
"灰色",
"淡蓝色",
"淡绿色",
"淡浅绿色",
"淡红色",
"淡紫色",
"淡黄色",
"亮白色",
};
printf("\n\n\t\t\t\t控制台文字颜色代码:");
printf("\n\n");
for (int i = 0; i <= 7; i++)
{
printf("\t\t");
setColor(i == 0 ? 0xE0 : i);
printf("%2X %-8s 海阔天空\t", i, CLRNAME[i]);
setColor(i + 8);
printf("\t%2X %-8s 海阔天空\n", i + 8, CLRNAME[i + 8]);
}
setColor(0x07); //默认颜色
printf("\n\n\t\t\t\t控制台背景颜色代码:");
printf("\n\n");
for (int i = 0; i <= 7; i++)
{
printf("\t\t");
setColor((i << 4) + (i == 0 ? 0xE : 0)); //把颜色值移到高位设置成背景色
printf("%2X %-20s\t", i, CLRNAME[i]);
setColor(0x07);
printf("\t");
setColor((i + 8) << 4);
printf("%2X %-20s\n", i + 8, CLRNAME[i + 8]);
setColor(0x07);
}
return 0;
}
posted on   Apull  阅读(25)  评论(0编辑  收藏  举报  
相关博文:
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 通过 API 将Deepseek响应流式内容输出到前端
· AI Agent开发,如何调用三方的API Function,是通过提示词来发起调用的吗
点击右上角即可分享
微信分享提示