在 OI \texttt{OI} OI当中,这个东西也许不甚重要,但是如果你想要做一些有趣的小玩意儿,这个东西必不可少。
我们直接来最有用的。在
c
m
d
\rm{cmd}
cmd中,你也许知道,system("color")
可以改变颜色。改变的规则是这样的:
C:\Users\Admin> color F0
这其中,F
代表背景色,0
代表文字颜色,对应关系如下表:
这样一来,可以直接改变整个框的背景色和文字颜色。
但是,如果我们要改变部分文字颜色呢?
请看以下代码:
void SetColorAndBackground(int ForgC, int BackC) {
WORD wColor = ((BackC & 0x0F) << 4) + (ForgC & 0x0F);
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), wColor);
}
其中, ForgC
代表文字颜色,BackC
代表背景颜色,对应关系如上表,只不过
A
\rm{A}
A ~
F
\rm{F}
F分别代表十进制的
10
10
10~
16
16
16。
使用SetColorAndBackground
改变颜色之后,输出的文字及文字的背景全部会变,直到下一次改变。
#include <bits/stdc++.h>
#include <windows.h>
using namespace std;
void SetColorAndBackground(int ForgC, int BackC) {
WORD wColor = ((BackC & 0x0F) << 4) + (ForgC & 0x0F);
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), wColor);
}
int main() {
SetColorAndBackground(15,0);
cout<<"hello"<<endl;
SetColorAndBackground(7,4);
cout<<"hello"<<endl;
return 0;
}
这就是最基本的两种改变颜色的方法。至于 A N S I \rm{ANSI} ANSI转义,这里不涉及。
去实验一下吧,说不定还会震惊你的同学们!