本文发布于 2020-02-14, 最后更新于 2348 天前,其中的信息可能已经有所发展或是发生改变。

文章摘要

控制台程序有一个命令,可以修改输出字体的颜色,那么C++编写控制台程序的时候,也可以实现这样的功能嘛?答案是肯定的。 我们来看一下效果图: 代码 #include iostream> #include cstdlib> #include Windows.h> using namespace std; void Color(int a) { SetConsoleTextAttribute(GetSt…

控制台程序有一个命令,可以修改输出字体的颜色,那么C++编写控制台程序的时候,也可以实现这样的功能嘛?答案是肯定的。

我们来看一下效果图:

代码

dns (Auto identified)
#include <iostream> #include <cstdlib> #include <Windows.h> using namespace std; void Color(int a) { SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), a); }//设置输出颜色 void ResetColor() { SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), 15); } int main() { cout << "原:tt都是黑底白字,也太乏味了吧" << endl; Color(11); cout << "一行一颜色:t来点有料的吧" << endl; Color(14); cout << "一行多颜色:t好的"; Color(13); cout << "哥" << endl; Color(BACKGROUND_INTENSITY | BACKGROUND_BLUE | FOREGROUND_INTENSITY | FOREGROUND_RED); cout << "带背景颜色:t" << "TEST" << endl; ResetColor(); system("pause"); return 0; }

这里需要解释一个函数 SetConsoleTextAttribute()

原型

BOOL SetConsoleTextAttribute(HANDLE hConsoleOutput, WORD wAttributes);

第一个参数使用GetStdHandle(STD_OUTPUT_HANDLE)函数就可获得控制台的输出句柄

第二个参数是用来设置颜色选项的,他是靠一个字节的低四位来控制前景色,高四位来控制背景色的。

什么意思呢?就是这个形参实际上可以同时设置字体颜色和背景颜色

它可以通过如下的表格来设置颜色(实际上可以用一个整数值代替)

wAttributes颜色对应的值
FOREGROUND_BLUE字体颜色:蓝1
FOREGROUND_GREEN字体颜色:绿2
FOREGROUND_RED字体颜色:红4
FOREGROUND_INTENSITY前景色高亮显示8
BACKGROUND_BLUE背景颜色:蓝16
BACKGROUND_GREEN背景颜色:绿32
BACKGROUND_RED背景颜色:红64
BACKGROUND_INTENSITY背景色高亮显示128

※摘自百度百科,词条传送门: 点我

如果要同时设置背景颜色和字体颜色,可以像下面这样用按位或运算符

BACKGROUND_INTENSITY | BACKGROUND_BLUE | FOREGROUND_INTENSITY | FOREGROUND_RED

当然如果嫌麻烦可以直接用整数值代替,因为它们实际上就是整数

整数值字体颜色表示如下:

basic (Auto identified)
1 深蓝色 2 深绿色 3 深青色 4 深红色 5 深粉色 6 黄色 7 深白色 8 灰色 9 浅蓝色 10 浅绿色 11 浅青色 12 浅红色 13 浅粉色 14 浅黄色 15 浅白色

看这些数字不难发现 ,这实际上就是控制台命令color的颜色列表

这样子的话,也许有的人会说直接用system("color");不就可以实现更改颜色字体了嘛,这个我也想到过,不过经过我的试验,发现用这句话实现的更改字体颜色会默认更改掉整个控制台的颜色,这显然不是我们想要的结果

九仞之行

严于律己,宽以待人,深自警省,讷言敏行

订阅
💬 评论 (1)
D
DonaldTrumpChrome 70 · Windows 10中国

可以

编辑器加载中…