📜  c++ 控制台颜色 - C++ (1)

📅  最后修改于: 2023-12-03 15:14:00.454000             🧑  作者: Mango

C++ 控制台颜色

在 C++ 控制台程序中,我们可以使用特定的代码来改变文本的颜色和背景色。这在提高程序的可读性和美观程度方面非常有帮助。

ANSI 控制码

在 Unix 系统下,可以使用 ANSI 控制码来改变文本颜色。但在 Windows 系统下,只有 Windows 10 支持 ANSI 控制码。

为了适配 Windows 7/8 等系统,我们可以使用 Windows API 函数 SetConsoleTextAttribute。这个函数可以直接设置控制台文本的前景色和背景色。

使用 SetConsoleTextAttribute 函数
#include <iostream>
#include <Windows.h>

int main()
{
    HANDLE hConsole = GetStdHandle(STD_OUTPUT_HANDLE);

    // 设置文本为绿色背景、白色前景
    SetConsoleTextAttribute(hConsole, BACKGROUND_GREEN | FOREGROUND_WHITE);

    std::cout << "Hello, world!" << std::endl;

    // 恢复默认颜色
    SetConsoleTextAttribute(hConsole, FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE);

    return 0;
}

在这个例子中,我们使用 GetStdHandle(STD_OUTPUT_HANDLE) 函数获取控制台句柄,然后使用 SetConsoleTextAttribute 函数设置文本颜色。最后使用 SetConsoleTextAttribute 函数恢复默认颜色。

颜色常量

Windows API 提供了一些颜色常量,用于方便地设置颜色。

常量 | 前景色 | 背景色 ---- | ------ | ------ FOREGROUND_BLACK | 黑色 | - FOREGROUND_BLUE | 蓝色 | - FOREGROUND_GREEN | 绿色 | - FOREGROUND_CYAN | 青色 | - FOREGROUND_RED | 红色 | - FOREGROUND_MAGENTA | 洋红 | - FOREGROUND_YELLOW | 黄色 | - FOREGROUND_WHITE | 白色 | - BACKGROUND_BLACK | - | 黑色 BACKGROUND_BLUE | - | 蓝色 BACKGROUND_GREEN | - | 绿色 BACKGROUND_CYAN | - | 青色 BACKGROUND_RED | - | 红色 BACKGROUND_MAGENTA | - | 洋红 BACKGROUND_YELLOW | - | 黄色 BACKGROUND_WHITE | - | 白色

自定义颜色

我们也可以使用自定义的颜色,需要使用 RGB 颜色模型的值。

const int FOREGROUND_MY_COLOR = FOREGROUND_RED | FOREGROUND_GREEN;
const int BACKGROUND_MY_COLOR = BACKGROUND_RED | BACKGROUND_GREEN;

SetConsoleTextAttribute(hConsole, FOREGROUND_MY_COLOR | BACKGROUND_MY_COLOR);

在这个例子中,我们定义了自定义前景色和背景色。使用 SetConsoleTextAttribute 函数设置文本颜色。

结论

使用控制台颜色可以让你的 C++ 控制台程序更加美观和易读。在 Windows 下,我们可以使用 SetConsoleTextAttribute 函数设置文本颜色。

参考链接: