#include <iostream>
#include <windows.h>
using namespace std;
int main()
{
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY |
FOREGROUND_RED);
cout<<"Hello"<<endl;
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY |
FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE);
cout<<"World"<<endl;
return 0;
}
这个是别人写过的一段程序
关键就是windows.h库中的一些api函数
SetConsoleTextAttribute
设置控制台文本属性
GetStdHandle(STD_OUTPUT_HANDLE)
得到当前标准输出的句柄
上面两个就这样写
关键的是下面这个:
FOREGROUND_INTENSITY | FOREGROUND_RED
其实就是强度并上颜色
如果没有FOREGROUND_INTENSITY 只有 FOREGROUND_RED
那么颜色就偏暗
#define FOREGROUND_BLUE 0x0001 // text color contains blue.
#define FOREGROUND_GREEN 0x0002 // text color contains green.
#define FOREGROUND_RED 0x0004 // text color contains red.
#define FOREGROUND_INTENSITY 0x0008 // text color is intensified.
#define BACKGROUND_BLUE 0x0010 // background color contains blue.
#define BACKGROUND_GREEN 0x0020 // background color contains green.
#define BACKGROUND_RED 0x0040 // background color contains red.
#define BACKGROUND_INTENSITY 0x0080 // background color is intensified.
这个是颜色参数
我看你图片里的几个颜色都能用这些参数拼出来
1.FOREGROUND_BLUE
2.FOREGROUND_GREEN
3.FOREGROUND_BLUE | FOREGROUND_GREEN
4.FOREGROUND_RED
5.FOREGROUND_BLUE | FOREGROUND_RED
.
..
.
10.FOREGROUND_INTENSITY | FOREGROUND_GREEN
11.FOREGROUND_INTENSITY | FOREGROUND_BLUE
12.FOREGROUND_INTENSITY | FOREGROUND_RED
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
SetConsoleTextAttribute 函数, 可以通过做一些封装后这样使用:
cout<<green<<"Green Color"<<endl;
SetColor.h
具体实现如下:
#ifndef SETCOLOR_H
#define SETCOLOR_H
#include <windows.h>
#include <iostream>
enum Color
{
red,green,white
};
std::ostream& operator<<(std::ostream &out,Color color);
class SetColor
{
public:
SetColor(){}
~SetColor(){}
// friend std::ostream& operator <<(std::ostream &out,Color color);
BOOL SetConsoleTextColor(WORD wAttributes);
std::ostream& GreenColor(std::ostream &out);
std::ostream& RedColor(std::ostream &out);
std::ostream& WhiteColor(std::ostream &out);
protected:
private:
};
#endif // REMOTEMETHOD_H
SetColor.cpp
#ifdef UNICODE
#define _T(x) L##x
#else
#define _T(x) x
#endif // UNICODE
#include "SetColor.h"
SetColor::SetColor()
{
//ctor
}
SetColor::~SetColor()
{
//dtor
}
inline BOOL SetColor::SetConsoleTextColor(WORD wAttributes)
{
if(!SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),wAttributes))
{
SetLastError(GetLastError());
return FALSE;
}
return TRUE;
}
inline std::ostream& SetColor::GreenColor(std::ostream &out)
{
SetConsoleTextColor(FOREGROUND_INTENSITY|FOREGROUND_GREEN);
return out;
}
inline std::ostream& SetColor::RedColor(std::ostream &out)
{
SetConsoleTextColor(FOREGROUND_INTENSITY|FOREGROUND_RED);
return out;
}
inline std::ostream& SetColor::WhiteColor(std::ostream &out)
{
SetConsoleTextColor(FOREGROUND_INTENSITY|FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE);
return out;
}
std::ostream& operator<< (std::ostream &out,Color color)
{
SetColor setcolor;
switch(color)
{
case red:
return setcolor.RedColor(out);
case green:
return setcolor.GreenColor(out);
case white:
return setcolor.WhiteColor(out);
}
return out;
}
转载于:https://blog.51cto.com/whatever957/1600145