有没有办法在 Windows 控制台(C++)中获得更多颜色?
“更多”是指 RGB 颜色。我试过了:
CONSOLE_SCREEN_BUFFER_INFOEX info;
info.cbSize = sizeof(CONSOLE_SCREEN_BUFFER_INFOEX);
HANDLE hcon = GetStdHandle(STD_OUTPUT_HANDLE);
GetConsoleScreenBufferInfoEx(hcon, &info);
info.ColorTable[0] = 0x505050;
info.ColorTable[1] = 0xcccccc;
SetConsoleScreenBufferInfoEx(hcon, &info);
SetConsoleTextAttribute(hcon, 01);
但我一次只能使用 16 种颜色。
来自控制台 API 的一些文档,特别是与 扩展颜色的虚拟终端序列相关的文档:
某些虚拟终端模拟器支持的颜色调色板大于 Windows 控制台提供的 16 种颜色。对于这些扩展颜色,Windows 控制台将从现有的 16 种颜色表中选择最接近的合适颜色进行显示。
基于此,我假设 Windows 控制台不支持超过 16 种颜色。如果我不得不猜测,这是与假设只有 16 种颜色的程序交互的向后兼容性限制。
如果您想要更多,最好不要使用 Windows 控制台。如果这是不可能的,那么您就只剩下 16 个了。