利用SetConsoleTextAttribute函数设置控制台颜色

控制台单调的颜色只有黑白两种,看起来多少难免有些单调。在没学图形化编程之前,每天看着控制台程序难免会枯燥无味。 不过,利用SetConsoleTextAttribute函数可以设置控制台的前景色和背景色。

闲言少叙,书归正传。 ①效果图:(颜色可以混合,遵循配色原理)

#include <windows.h> 
#include <iostream> 
using namespace std;  
 
 
int main()  
{  
 HANDLE hOut;  
 
 
    hOut = GetStdHandle(STD_OUTPUT_HANDLE);  
 
 
    SetConsoleTextAttribute(hOut,  
                            FOREGROUND_RED |   
                            FOREGROUND_GREEN);  
    cout << "This text is yellow." << endl;  
 
 
    SetConsoleTextAttribute(hOut,  
                            FOREGROUND_GREEN |   
                            FOREGROUND_BLUE);  
    cout << "This text is cyan." << endl;  
 
 
    SetConsoleTextAttribute(hOut,  
                            FOREGROUND_BLUE |   
                            FOREGROUND_RED);  
    cout << "This text is magenta." << endl;  
 
 
    SetConsoleTextAttribute(hOut,  
                            FOREGROUND_RED |   
                            FOREGROUND_GREEN |   
                            FOREGROUND_BLUE);  
    cout << "This text is white." << endl;  
 
 
 return 0;  
}  

②效果图:(明暗颜色)

#include <windows.h> 
#include <iostream> 
using namespace std;  
 
int main()  
{  
 HANDLE hOut;  
 
    hOut = GetStdHandle(STD_OUTPUT_HANDLE);  
 
    SetConsoleTextAttribute(hOut,  
                            FOREGROUND_RED);  
    cout << "Red     " << flush;  
    SetConsoleTextAttribute(hOut,  
                            FOREGROUND_RED |  
                            FOREGROUND_INTENSITY);  
    cout << "Red" << endl;  
 
    SetConsoleTextAttribute(hOut,  
                            FOREGROUND_GREEN);  
    cout << "Green   " << flush;  
    SetConsoleTextAttribute(hOut,  
                            FOREGROUND_GREEN |  
                            FOREGROUND_INTENSITY);  
    cout << "Green" << endl;  
 
    SetConsoleTextAttribute(hOut,  
                            FOREGROUND_BLUE);  
    cout << "Blue    " << flush;  
    SetConsoleTextAttribute(hOut,  
                            FOREGROUND_BLUE |  
                            FOREGROUND_INTENSITY);  
    cout << "Blue" << endl;  
 
    SetConsoleTextAttribute(hOut,  
                            FOREGROUND_RED |   
                            FOREGROUND_GREEN);  
    cout << "Yellow  " << flush;  
    SetConsoleTextAttribute(hOut,  
                            FOREGROUND_RED |   
                            FOREGROUND_GREEN |  
                            FOREGROUND_INTENSITY);  
    cout << "Yellow" << endl;  
 
    SetConsoleTextAttribute(hOut,  
                            FOREGROUND_GREEN |   
                            FOREGROUND_BLUE);  
    cout << "Cyan    " << flush;  
    SetConsoleTextAttribute(hOut,  
                            FOREGROUND_GREEN |   
                            FOREGROUND_BLUE |  
                            FOREGROUND_INTENSITY);  
    cout << "Cyan" << endl;  
 
    SetConsoleTextAttribute(hOut,  
                            FOREGROUND_BLUE |   
                            FOREGROUND_RED);  
    cout << "Magenta " << flush;  
    SetConsoleTextAttribute(hOut,  
                            FOREGROUND_BLUE |   
                            FOREGROUND_RED |  
                            FOREGROUND_INTENSITY);  
    cout << "Magenta" << endl;  
 
    SetConsoleTextAttribute(hOut,  
                            FOREGROUND_RED |   
                            FOREGROUND_GREEN |   
                            FOREGROUND_BLUE);  
    cout << "White   " << flush;  
    SetConsoleTextAttribute(hOut,  
                            FOREGROUND_RED |   
                            FOREGROUND_GREEN |   
                            FOREGROUND_BLUE |  
                            FOREGROUND_INTENSITY);  
    cout << "White" << endl;  
 
 return 0;  
}  

③背景颜色:

#include <windows.h> 
#include <iostream> 
using namespace std;  
 
int main()  
{  
 HANDLE hOut;  
 
    hOut = GetStdHandle(STD_OUTPUT_HANDLE);  
 
    SetConsoleTextAttribute(hOut,  
                            BACKGROUND_RED);  
    cout << "Red     " << flush;  
    SetConsoleTextAttribute(hOut,  
                            BACKGROUND_RED |  
                            BACKGROUND_INTENSITY);  
    cout << "Red     " << endl;  
 
    SetConsoleTextAttribute(hOut,  
                            BACKGROUND_GREEN);  
    cout << "Green   " << flush;  
    SetConsoleTextAttribute(hOut,  
                            BACKGROUND_GREEN |  
                            BACKGROUND_INTENSITY);  
    cout << "Green   " << endl;  
 
    SetConsoleTextAttribute(hOut,  
                            BACKGROUND_BLUE);  
    cout << "Blue    " << flush;  
    SetConsoleTextAttribute(hOut,  
                            BACKGROUND_BLUE |  
                            BACKGROUND_INTENSITY);  
    cout << "Blue    " << endl;  
 
    SetConsoleTextAttribute(hOut,  
                            BACKGROUND_RED |  
                            BACKGROUND_GREEN);  
    cout << "Yellow  " << flush;  
    SetConsoleTextAttribute(hOut,  
                            BACKGROUND_RED |  
                            BACKGROUND_GREEN |  
                            BACKGROUND_INTENSITY);  
    cout << "Yellow  " << endl;  
 
    SetConsoleTextAttribute(hOut,  
                            BACKGROUND_GREEN |  
                            BACKGROUND_BLUE);  
    cout << "Cyan    " << flush;  
    SetConsoleTextAttribute(hOut,  
                            BACKGROUND_GREEN |  
                            BACKGROUND_BLUE |  
                            BACKGROUND_INTENSITY);  
    cout << "Cyan    " << endl;  
 
    SetConsoleTextAttribute(hOut,  
                            BACKGROUND_BLUE |  
                            BACKGROUND_RED);  
    cout << "Magenta " << flush;  
    SetConsoleTextAttribute(hOut,  
                            BACKGROUND_BLUE |  
                            BACKGROUND_RED |  
                            BACKGROUND_INTENSITY);  
    cout << "Magenta " << endl;  
 
    SetConsoleTextAttribute(hOut,  
                            BACKGROUND_RED |  
                            BACKGROUND_GREEN |  
                            BACKGROUND_BLUE);  
    cout << "White   " << flush;  
    SetConsoleTextAttribute(hOut,  
                            BACKGROUND_RED |  
                            BACKGROUND_GREEN |  
                            BACKGROUND_BLUE |  
                            BACKGROUND_INTENSITY);  
    cout << "White   " << endl;  
 
 return 0;  
}  

以上的介绍大致上能满足需要了。如果需要更多的颜色使用方法。请参考 http://charon.bdeb.qc.ca/docs/cpp/www.adrianxw.dk/SoftwareSite/Consoles/Consoles4.html

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏数据处理

proc-tabulate-report

1044
来自专栏有趣的Python

数据结构探险之线性表篇(上):顺序表

数据结构探险之线性表篇 将要学到得: 线性表(链表) 什么是线性表? 线性表是n个数据元素的有限序列 ? 线性表 排列之后成线性展开。 有限 & 数据元素(简...

3409
来自专栏菩提树下的杨过

(Head First 设计模式)学习笔记(3) --装饰者模式(StarBuzz咖啡店实例)

应用概述: StarBuzz咖啡店有很多饮料,每种饮料都可以根据客户需要加一些调料,比如深培咖啡可以加摩卡(或双倍摩卡),而且某些饮料可以分为大中小杯,根据容...

1628
来自专栏后端之路

跳表在手天下我有之ConcurrentSkipListMap

背景 Jdk给我们提供了大量的map来供我们研发使用。通常情况下我们使用HashMap 需要插入顺序或者访问我们可以使用LinkedHashMap 需要排序我们...

27010
来自专栏陈树义

7.Redis常用命令:ZSet

  Sorted-Sets和Sets类型极为相似,它们都是字符串的集合,都不允许重复的成员出现在一个Set中。它们之间的主要差别是Sorted-Sets中的每一...

3305
来自专栏专知

关关的刷题日记76 – Leetcode 234. Palindrome Linked List

关关的刷题日记76 – Leetcode 234. Palindrome Linked List 题目 Given a singly linked list, ...

3149
来自专栏salesforce零基础学习

salesforce 零基础学习(三十九) soql函数以及常量

在salesforce中,我们做SOQL查询时,往往需要用到计算式,比如求和,求平均值,或者过滤数据时,往往需要通过时间日期过滤,SOQL已经封装了很多的函数,...

5370
来自专栏wym

手把手教你写linux系统下贪吃蛇(一)

typedef struct snakeBodynode { int x; int y;                    //x,y是坐标 stru...

542
来自专栏Java学习123

用PyQt实现透明桌面时钟小部件

3167
来自专栏草根专栏

使用xUnit为.net core程序进行单元测试(2)

下面有一点点内容是重叠的.... String Assert 测试string是否相等: [Fact] public void ...

4147

扫描关注云+社区