更改 windows下控制台 输出的字体颜色

15 篇文章 1 订阅
#include <iostream>
#include <windows.h>
  
using namespace std;
  
int main()
{
    int k;
    
    for(k=1; k<255; k++)
    {
        SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), k);
        cout <<"  "<< k <<" -- I want to be nice today!" <<endl;
    }
    SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), 7);
    return 0;
}

  

  

VC改变控制台字符颜色

Windows系统的命令行中,可以用color命令改变颜色。比如"color fc"表示背景为白色,文字为红色。(具体的使用说明可以在命令行中输入"color /?"来查看)要让你的C++程序做到这一点,只需要写:system("color fc");就可以了。

设置默认的控制台前景和背景颜色。

COLOR [attr]

attr 指定控制台输出的颜色属性

颜色属性由两个十六进制数字指定 -- 第一个为背景,第二个则为前景。每个数字可以为以下任何值之一:

    0 = 黑色         4 = 红色   8 = 灰色         C = 淡红色

    1 = 蓝色        5 = 紫色    9 = 淡蓝色     D = 淡紫色

    2 = 绿色        6 = 黄色    A = 淡绿色     E = 淡黄色

    3 = 湖蓝色     7 = 白色    B = 淡浅绿色  F = 亮白色

如果想改变下一个输出或者输入字体和背景的颜色,如下图:

http://hiphotos.baidu.com/blueblood1982/pic/item/bb159d015b015e47728da509.jpg

采用SetConsoleTextAttribute函数

#include <iostream>
#include <windows.h>
  
using namespace std;
  
int main()
{
    HANDLE hConsole=GetStdHandle(STD_OUTPUT_HANDLE);
    SetConsoleTextAttribute(hConsole, 4);
    cout <<endl<<"I want to be nice today!" <<endl;
    SetConsoleTextAttribute(hConsole, 0xf);
    cin.get();
    return 0;
}

结果就会是一行红色字体:I want to be nice today!

当我们在C语言控制台输出文本时,除了可以输出文本内容之外,还可以对文本的颜色进行设置,来使输出的文本更加丰富、直观。控制台的颜色设置是通过Windows API函数`SetConsoleTextAttribute()`来实现的。 `SetConsoleTextAttribute()`函数可以设置输出文本的前景色和背景色,前景色指的是文本本身的颜色,而背景色则是文本所在的背景颜色。该函数的原型如下: ```c BOOL SetConsoleTextAttribute( HANDLE hConsoleOutput, WORD wAttributes ); ``` 其中,`hConsoleOutput`参数指定了要设置属性的控制台屏幕缓冲区的句柄,可以通过`GetStdHandle(STD_OUTPUT_HANDLE)`函数获取。`wAttributes`参数指定了输出文本的属性,其中低4位指定前景色,高4位指定背景色。下面是常用的颜色属性值: | 颜色属性值 | 前景色 | 背景色 | | --------- | ------ | ------ | | 0 | 黑色 | 黑色 | | 1 | 蓝色 | 蓝色 | | 2 | 绿色 | 绿色 | | 3 | 浅绿色 | 浅绿色 | | 4 | 红色 | 红色 | | 5 | 紫色 | 紫色 | | 6 | 黄色 | 黄色 | | 7 | 白色 | 白色 | | 8 | 灰色 | 灰色 | | 9 | 淡蓝色 | 淡蓝色 | | 10 | 淡绿色 | 淡绿色 | | 11 | 淡浅绿 | 淡浅绿 | | 12 | 淡红色 | 淡红色 | | 13 | 淡紫色 | 淡紫色 | | 14 | 淡黄色 | 淡黄色 | | 15 | 亮白色 | 亮白色 | 例如,我们可以使用以下代码将控制台的前景色设置为红色、背景色设置为黄色: ```c #include <stdio.h> #include <windows.h> int main() { HANDLE handle = GetStdHandle(STD_OUTPUT_HANDLE); WORD color = FOREGROUND_RED | BACKGROUND_YELLOW | FOREGROUND_INTENSITY; SetConsoleTextAttribute(handle, color); printf("Hello World!"); return 0; } ``` 除了设置前景色和背景色之外,我们还可以使用`GetConsoleScreenBufferInfo()`函数获取当前控制台屏幕缓冲区的属性信息,包括前景色和背景色等,以便恢复默认的控制台颜色。例如: ```c #include <stdio.h> #include <windows.h> int main() { HANDLE handle = GetStdHandle(STD_OUTPUT_HANDLE); CONSOLE_SCREEN_BUFFER_INFO info; GetConsoleScreenBufferInfo(handle, &info); WORD old_color = info.wAttributes; WORD color = FOREGROUND_RED | BACKGROUND_YELLOW | FOREGROUND_INTENSITY; SetConsoleTextAttribute(handle, color); printf("Hello World!"); SetConsoleTextAttribute(handle, old_color); return 0; } ``` 在控制台中,我们也可以通过以下代码来设置控制台字体颜色,以便更改输出文本的颜色: ```c #include <stdio.h> #include <windows.h> int main() { system("color 4f"); printf("Hello World!"); return 0; } ``` 其中,`system("color 4f")`指令中的`4`表示红色,`f`表示白色,可以根据需要更改。需要注意的是,该指令只能在Windows系统上执行,且只能在控制台中执行,不能在IDE等其他环境中执行。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值