C语言控制台程序美化 设置字体颜色

方法一:

加载头文件stdlib.h,使用system()函数可以直接设置全局的字体颜色和背景颜色。

例如:

方法二:

如果想精确的控制某一行的颜色,则需要SetConsoleTextAttribute()这个函数。

BOOL WINAPI SetConsoleTextAttribute(
  _In_  HANDLE hConsoleOutput,  // 控制台输出流句柄
  _In_  WORD wAttributes        // 设置属性
);

hConsoleOutput [输入参数]

控制台屏幕的输出流的句柄(handle to console screen buffer)。这个文件流的句柄必须有写入(GENERIC_READ)的权限。更多的信息,请查看MSDN上的Console Buffer Security and Access Rights

wAttributes [输入参数]

具体常见设置属性如下:

属性 意义
FOREGROUND_BLUE 前景色包含 蓝色
FOREGROUND_GREEN 前景色包含 绿色
FOREGROUND_RED 前景色包含 红色
FOREGROUND_INTENSITY 前景色加强
BACKGROUND_BLUE 背景色包含 蓝色
BACKGROUND_GREEN 背景色包含 绿色
BACKGROUND_RED 背景色包含 红色
BACKGROUND_INTENSITY 背景色加强
COMMON_LVB_GRID_HORIZONTAL 顶部水平网格
COMMON_LVB_GRID_LVERTICAL 左竖直网格
COMMON_LVB_GRID_RVERTICAL 右竖直网格
COMMON_LVB_UNDERSCORE 下划线

 

代码测试

#include  
#include 
#include 
  
int main() 
{ 
    HANDLE hOut; 
 
    //  获取输出流的句柄
    hOut = GetStdHandle(STD_OUTPUT_HANDLE);   
 
    printf("普通颜色看看\n");
 
    SetConsoleTextAttribute(hOut, 
                            FOREGROUND_GREEN |      // 前景色_绿色
                            FOREGROUND_INTENSITY ); // 前景色_加强
    printf("设置了浅绿色.\n"); 
    printf("并且完了之后就一直是浅绿色\n");
 
    SetConsoleTextAttribute(hOut, 
                            FOREGROUND_BLUE |       // 前景色_蓝色
                            FOREGROUND_INTENSITY |  // 前景色_加强
                            COMMON_LVB_UNDERSCORE); // 添加下划线
    printf("文字蓝色,再加个下划线.\n");   
 
    SetConsoleTextAttribute(hOut, 
                            FOREGROUND_RED |        // 前景色_红色
                            FOREGROUND_INTENSITY |  // 前景色_加强
                            BACKGROUND_BLUE );      // 背景色_蓝色
    printf("设置文字红色,背景蓝色\n"); 
 
    SetConsoleTextAttribute(hOut, 
                            FOREGROUND_RED |            // 前景色_红色
                            FOREGROUND_INTENSITY |      // 前景色_加强
                            COMMON_LVB_GRID_LVERTICAL );// 网格_左_竖
    printf("                      加 左 网格\n"); 
 
    SetConsoleTextAttribute(hOut, 
                            FOREGROUND_RED |            // 前景色_红色
                            FOREGROUND_INTENSITY |      // 前景色_加强
                            COMMON_LVB_GRID_RVERTICAL );// 网格_右_竖 
    printf("                      加 右 网格\n");   
 
    SetConsoleTextAttribute(hOut, 
                            FOREGROUND_RED |    // 前景色_红色
                            FOREGROUND_GREEN |  // 前景色_绿色
                            FOREGROUND_BLUE );  // 前景色_蓝色
    printf("改回白色\n"); 
 
    system("pause");
    return 0; 
}

具体配色,请参见下图:

例如紫色可以用 蓝色+红色 配出来:

#include <windows.h> 
#include <stdio.h>    // for printf
#include <stdlib.h>   // for system
  
int main() 
{ 
    HANDLE hOut; 
 
    //  获取输出流的句柄
    hOut = GetStdHandle(STD_OUTPUT_HANDLE);   
 
    SetConsoleTextAttribute(hOut, 
                            FOREGROUND_RED |  // 前景色_红色
                            FOREGROUND_BLUE | // 前景色_蓝色
                            FOREGROUND_INTENSITY);// 加强
    printf(" 红 + 蓝 = 紫色 ^_^\n"); 
 
    system("pause");
    return 0; 
} 

再要配其他颜色的话,就要去查一些配色表了

1 条评论

[/0o0] [..^v^..] [0_0] [T.T] [=3-❤] [❤.❤] [^v^] [-.0] [!- -] [=x=] [→_→] [><] 更多 »
昵称
  1. 南柯一梦 Google Chrome 45 Google Chrome 45 Windows 10 Windows 10

    :wink: :-| :-x :cry: