控制台颜色

控制台单调的颜色只有黑白两种,看起来多少有点单调。其实,可以利用SetConsoleTextAttribute函数设置控制台的前景色和背景色。

该函数需要头文件 #include <windows.h>

一、颜色可以混合,遵循配色原理

1.    #include <windows.h>
2.    #include <iostream>
3.    using namespace std;
4.
5.
6.    int main()
7.    {
8.        HANDLE hOut;
9.
10.
11.        hOut = GetStdHandle(STD_OUTPUT_HANDLE);
12.
13.
14.        SetConsoleTextAttribute(hOut,
15.                                FOREGROUND_RED |
16.                                FOREGROUND_GREEN);
17.        cout << "This text is yellow." << endl;
18.
19.
20.        SetConsoleTextAttribute(hOut,
21.                                FOREGROUND_GREEN |
22.                                FOREGROUND_BLUE);
23.        cout << "This text is cyan." << endl;
24.
25.
26.        SetConsoleTextAttribute(hOut,
27.                                FOREGROUND_BLUE |
28.                                FOREGROUND_RED);
29.        cout << "This text is magenta." << endl;
30.
31.
32.        SetConsoleTextAttribute(hOut,
33.                                FOREGROUND_RED |
34.                                FOREGROUND_GREEN |
35.                                FOREGROUND_BLUE);
36.        cout << "This text is white." << endl;
37.
38.
39.        return 0;
40.    }  

二、明暗颜色

1.    #include <windows.h>
2.    #include <iostream>
3.    using namespace std;
4.
5.    int main()
6.    {
7.        HANDLE hOut;
8.
9.        hOut = GetStdHandle(STD_OUTPUT_HANDLE);
10.
11.        SetConsoleTextAttribute(hOut,
12.                                FOREGROUND_RED);
13.        cout << "Red     " << flush;
14.        SetConsoleTextAttribute(hOut,
15.                                FOREGROUND_RED |
16.                                FOREGROUND_INTENSITY);
17.        cout << "Red" << endl;
18.
19.        SetConsoleTextAttribute(hOut,
20.                                FOREGROUND_GREEN);
21.        cout << "Green   " << flush;
22.        SetConsoleTextAttribute(hOut,
23.                                FOREGROUND_GREEN |
24.                                FOREGROUND_INTENSITY);
25.        cout << "Green" << endl;
26.
27.        SetConsoleTextAttribute(hOut,
28.                                FOREGROUND_BLUE);
29.        cout << "Blue    " << flush;
30.        SetConsoleTextAttribute(hOut,
31.                                FOREGROUND_BLUE |
32.                                FOREGROUND_INTENSITY);
33.        cout << "Blue" << endl;
34.
35.        SetConsoleTextAttribute(hOut,
36.                                FOREGROUND_RED |
37.                                FOREGROUND_GREEN);
38.        cout << "Yellow  " << flush;
39.        SetConsoleTextAttribute(hOut,
40.                                FOREGROUND_RED |
41.                                FOREGROUND_GREEN |
42.                                FOREGROUND_INTENSITY);
43.        cout << "Yellow" << endl;
44.
45.        SetConsoleTextAttribute(hOut,
46.                                FOREGROUND_GREEN |
47.                                FOREGROUND_BLUE);
48.        cout << "Cyan    " << flush;
49.        SetConsoleTextAttribute(hOut,
50.                                FOREGROUND_GREEN |
51.                                FOREGROUND_BLUE |
52.                                FOREGROUND_INTENSITY);
53.        cout << "Cyan" << endl;
54.
55.        SetConsoleTextAttribute(hOut,
56.                                FOREGROUND_BLUE |
57.                                FOREGROUND_RED);
58.        cout << "Magenta " << flush;
59.        SetConsoleTextAttribute(hOut,
60.                                FOREGROUND_BLUE |
61.                                FOREGROUND_RED |
62.                                FOREGROUND_INTENSITY);
63.        cout << "Magenta" << endl;
64.
65.        SetConsoleTextAttribute(hOut,
66.                                FOREGROUND_RED |
67.                                FOREGROUND_GREEN |
68.                                FOREGROUND_BLUE);
69.        cout << "White   " << flush;
70.        SetConsoleTextAttribute(hOut,
71.                                FOREGROUND_RED |
72.                                FOREGROUND_GREEN |
73.                                FOREGROUND_BLUE |
74.                                FOREGROUND_INTENSITY);
75.        cout << "White" << endl;
76.
77.        return 0;
78.    }

三、背景颜色

1.    #include <windows.h>
2.    #include <iostream>
3.    using namespace std;
4.
5.    int main()
6.    {
7.        HANDLE hOut;
8.
9.        hOut = GetStdHandle(STD_OUTPUT_HANDLE);
10.
11.        SetConsoleTextAttribute(hOut,
12.                                BACKGROUND_RED);
13.        cout << "Red     " << flush;
14.        SetConsoleTextAttribute(hOut,
15.                                BACKGROUND_RED |
16.                                BACKGROUND_INTENSITY);
17.        cout << "Red     " << endl;
18.
19.        SetConsoleTextAttribute(hOut,
20.                                BACKGROUND_GREEN);
21.        cout << "Green   " << flush;
22.        SetConsoleTextAttribute(hOut,
23.                                BACKGROUND_GREEN |
24.                                BACKGROUND_INTENSITY);
25.        cout << "Green   " << endl;
26.
27.        SetConsoleTextAttribute(hOut,
28.                                BACKGROUND_BLUE);
29.        cout << "Blue    " << flush;
30.        SetConsoleTextAttribute(hOut,
31.                                BACKGROUND_BLUE |
32.                                BACKGROUND_INTENSITY);
33.        cout << "Blue    " << endl;
34.
35.        SetConsoleTextAttribute(hOut,
36.                                BACKGROUND_RED |
37.                                BACKGROUND_GREEN);
38.        cout << "Yellow  " << flush;
39.        SetConsoleTextAttribute(hOut,
40.                                BACKGROUND_RED |
41.                                BACKGROUND_GREEN |
42.                                BACKGROUND_INTENSITY);
43.        cout << "Yellow  " << endl;
44.
45.        SetConsoleTextAttribute(hOut,
46.                                BACKGROUND_GREEN |
47.                                BACKGROUND_BLUE);
48.        cout << "Cyan    " << flush;
49.        SetConsoleTextAttribute(hOut,
50.                                BACKGROUND_GREEN |
51.                                BACKGROUND_BLUE |
52.                                BACKGROUND_INTENSITY);
53.        cout << "Cyan    " << endl;
54.
55.        SetConsoleTextAttribute(hOut,
56.                                BACKGROUND_BLUE |
57.                                BACKGROUND_RED);
58.        cout << "Magenta " << flush;
59.        SetConsoleTextAttribute(hOut,
60.                                BACKGROUND_BLUE |
61.                                BACKGROUND_RED |
62.                                BACKGROUND_INTENSITY);
63.        cout << "Magenta " << endl;
64.
65.        SetConsoleTextAttribute(hOut,
66.                                BACKGROUND_RED |
67.                                BACKGROUND_GREEN |
68.                                BACKGROUND_BLUE);
69.        cout << "White   " << flush;
70.        SetConsoleTextAttribute(hOut,
71.                                BACKGROUND_RED |
72.                                BACKGROUND_GREEN |
73.                                BACKGROUND_BLUE |
74.                                BACKGROUND_INTENSITY);
75.        cout << "White   " << endl;
76.
77.        return 0;
78.    }  

四、简化颜色函数

#include <windows.h>

void color(int b)
{
    HANDLE hConsole=GetStdHandle(STD_OUTPUT_HANDLE);
    SetConsoleTextAttribute(hConsole,b);
}

具体配色,参见下图:



含义


STD_INPUT_HANDLE


标准输入的句柄


STD_OUTPUT_HANDLE


标准输出的句柄


STD_ERROR_HANDLE


标准错误的句柄

  

wAttributes是用来设置颜色的参数:


wAttributes


颜色


对应的值(b)


FOREGROUND_BLUE


字体颜色:蓝


1


FOREGROUND_GREEN


字体颜色:绿


2


FOREGROUND_RED


字体颜色:红


4


FOREGROUND_INTENSITY


前景色高亮显示


8


BACKGROUND_BLUE


背景颜色:蓝


16


BACKGROUND_GREEN


背景颜色:绿


32


BACKGROUND_RED


背景颜色:红


64


BACKGROUND_INTENSITY


背景色高亮显示


128

也就是说SetConsoleTextAttribute函数是靠一个字节的低四来控制前景色,高四位来控制背景色。

例如:

color(4):字体为红;color(8+4):字体为亮红;

color(6):字体为黄;color(8+6):字体为亮黄;

背景色同理。

时间: 2024-10-11 11:42:00

控制台颜色的相关文章

8字型时间式显示字母,附加控制台颜色设置

#include <windows.h>#include<iostream>#include"time.h"#include"conio.h"using namespace std;const int len=5,wid=7;//每个字为len*wid(长和高),wid须为奇数 HANDLE hOutput=GetStdHandle(STD_OUTPUT_HANDLE);// 控制台输出句柄CONSOLE_CURSOR_INFO cursor

Log4j 2配置与IntelliJ IDEA控制台颜色

Log4j是Java平台上最好的日志组件了,Log4j 2升级了不少API,拓展性更好.使用的话只需要直接引入就可以了. <dependency> <groupId>log4j</groupId> <artifactId>log4j</artifactId> <version>1.2.17</version> </dependency> 然后配置下,log4j配置文件,配置文件网上巴拉巴拉很多啦. 然后测试下:

python 控制台颜色

控制台输出带颜色的文字方法: 在python开发的过程中,经常会遇到需要打印各种信息.海量的信息堆砌在控制台中,就会导致信息都混在一起,降低了重要信息的可读性.这时候,如果能给重要的信息加上字体颜色,那么就会更加方便用户阅读了. 当然了,控制台的展示效果有限,并不能像前段一样炫酷,只能做一些简单的设置.不过站在可读性的角度来看,已经好很多了. 书写格式,和相关说明如下: #格式: 设置颜色开始 :\033[显示方式;前景色;背景色m #说明: 前景色 背景色 颜色 ---------------

C#学习日志 day 2 ------ 控制台颜色以及windowsphone 窗体应用试建

成功跑起来了hello之后,试试改变背景颜色. 这个很简单效果就是这样. 接下来就是试建立windowsphone8.1应用. 这个需要windowsphone 8.1 的SDK.C#2013自带的,但是我的出了一些问题, 所以找到了安装文件修复了一下. 创建窗口应用.顺带一提, 创建windowsphone 窗口应用需要用到Hyper-V虚拟机,没开启可能会出问题. hello C# !!

C\C++控制台颜色设置类

windows和Linux都可用的一个类...用来设置颜色,没有太复杂.简单够用吧. #ifdef _WIN32 #include <Windows.h> class FontColor { public: FontColor() { m_hStdOut = GetStdHandle(STD_OUTPUT_HANDLE); } void SetColor(int nColor) { SetConsoleTextAttribute(m_hStdOut, nColor); } void UnSet

python控制台实现打印带颜色的字体

控制台颜色分类: 数值表示的参数含义: 显示方式: 0(默认值).1(高亮).22(非粗体).4(下划线).24(非下划线). 5(闪烁).25(非闪烁).7(反显).27(非反显)前景色: 30(黑色).31(红色).32(绿色). 33(黄色).34(蓝色).35(洋 红).36(青色).37(白色)背景色: 40(黑色).41(红色).42(绿色). 43(黄色).44(蓝色).45(洋 红).46(青色).47(白色) 源码: 1 #!/user/bin/env python 2 #-*

slf4j日志只输出到控制台,没输出到日志文件

最近使用SLF4J遇到了一个比较头疼的坑,日志输出到控制台没有问题,但是始终没有输出到日志文件.无论怎麽修改日志配置,始终是老样子. 有一种绝望,是各种百度.google却还是解决不了问题..直到我在启动项目的时候发现了这样的提示, SLF4J: Class path contains multiple SLF4J bindings.SLF4J: Found binding in [jar:file:/E:/Java/tp-wechat/webapps/wechat-hy/WEB-INF/lib

.NET Core的日志[2]:将日志输出到控制台

对于一个控制台应用,比如采用控制台应用作为宿主的ASP.NET Core应用,我们可以将记录的日志直接输出到控制台上.针对控制台的Logger是一个类型为ConsoleLogger的对象,ConsoleLogger对应的LoggerProvider类型为ConsoleLoggerProvider,这两个类型都定义在 NuGet包"Microsoft.Extensions.Logging.Console"之中. 本文已经同步到<ASP.NET Core框架揭秘>之中] 目录一

利用正则实现彩色控制台输出

近期忙了一阵less的二次开发的工作,期间遇到了不少须要向控制台输出彩色文字的需求.翻了下曾经同事的代码,发现要么自己拼转义字符串,要么使用一些不太好用的第三方库.总之都不是非常合自己的口味. 依照自己的口味,一个好的第三方库应该满足例如以下需求: 要支持丰富的颜色设置,同一时候设置颜色又不能太累赘,并且要支持console.log的通配符表示方法以降低拼字符串的工作.cli-color和colors的语法类似,都是採用方法来设定字符串颜色: // colors console.log("thi