C++之如何設置字體顏色
方法一:system(“color”)
system函數(shù)想必大家都聽說過,它可以用來設置字體的顏色,只需要在color后加上字體的背景色和前景色,
取值如下:
| 符號 | 表示顏色 | 符號 | 表示顏色 |
|---|---|---|---|
| 0 | 黑色 | 8 | 灰色 |
| 1 | 藍色 | 9 | 淡藍色 |
| 2 | 綠色 | A | 淡綠色 |
| 3 | 淺綠色 | B | 淡淺綠色 |
| 4 | 紅色 | C | 淡紅色 |
| 5 | 紫色 | D | 淡紫色 |
| 6 | 黃色 | E | 淡黃色 |
| 7 | 白色 | F | 亮白色 |
接下來,我們就可以通過system("color")設置字體顏色了,
下面的代碼就可以將字體設為白底黑字:
#include <bits/stdc++.h>
using namespace std;
int main() {
system("color F0");
cout<<"hello"<<endl;
return 0;
}方法二:SetConsoleTextAttribute
在使用system("color")的時候,你會發(fā)現(xiàn),一旦使用該函數(shù),整個窗口都會被改變顏色。
那么如何設置單個字的顏色呢?
這就要用到SetConsoleTextAttribute函數(shù)了,他需要頭文件<windows.h>。
void SetColorAndBackground(int ForgC, int BackC) {
WORD wColor = ((BackC & 0x0F) << 4) + (ForgC & 0x0F);
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), wColor);
}SetConsoleTextAttribute實際上需要混合顏色的,但為了方便使用 ,我們將他轉(zhuǎn)換成以上函數(shù),ForgC表示前景色,取值范圍從1~15,BackC表示背景色,取值也是1~15。
我們就來做一個簡單的測試:
#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;
}
方法三:ANSI轉(zhuǎn)義序列
學習了SetConsoleTextAttribute函數(shù),你會發(fā)現(xiàn),SetConsoleTextAttribute中只有16種顏色,里面既沒有橘色也沒有棕色。
現(xiàn)在我們就來學習RGB顏色——ANSI,需要添加頭文件<windows>。
ANSI只適用于Windows10的用戶,其他版本不支持 詳見此處
void rgb_init() { // 初始化
HANDLE hIn = GetStdHandle(STD_INPUT_HANDLE); //輸入句柄
HANDLE hOut = GetStdHandle(STD_OUTPUT_HANDLE); //輸出句柄
DWORD dwInMode, dwOutMode;
GetConsoleMode(hIn, &dwInMode); //獲取控制臺輸入模式
GetConsoleMode(hOut, &dwOutMode); //獲取控制臺輸出模式
dwInMode |= 0x0200; //更改
dwOutMode |= 0x0004;
SetConsoleMode(hIn, dwInMode); //設置控制臺輸入模式
SetConsoleMode(hOut, dwOutMode); //設置控制臺輸出模式
}
void rgb_set(int wr,int wg,int wb,int br,int bg,int bb) { //設置RGB
printf("\033[38;2;%d;%d;%dm\033[48;2;%d;%d;%dm",wr,wg,wb,br,bg,bb); //\033[38表示前景,\033[48表示背景,三個%d表示混合的數(shù)
}我們先來看一下代碼,rgb_init用來初始化ANSI(不然會亂碼),接下來用rgb_init設置字體RGB顏色即可。
現(xiàn)在就上完整代碼啦!
#include <bits/stdc++.h>
#include <windows.h>
using namespace std;
void rgb_init() { // 初始化
HANDLE hIn = GetStdHandle(STD_INPUT_HANDLE); //輸入句柄
HANDLE hOut = GetStdHandle(STD_OUTPUT_HANDLE); //輸出句柄
DWORD dwInMode, dwOutMode;
GetConsoleMode(hIn, &dwInMode); //獲取控制臺輸入模式
GetConsoleMode(hOut, &dwOutMode); //獲取控制臺輸出模式
dwInMode |= 0x0200; //更改
dwOutMode |= 0x0004;
SetConsoleMode(hIn, dwInMode); //設置控制臺輸入模式
SetConsoleMode(hOut, dwOutMode); //設置控制臺輸出模式
}
void rgb_set(int wr,int wg,int wb,int br,int bg,int bb) { //設置RGB
printf("\033[38;2;%d;%d;%dm\033[48;2;%d;%d;%dm",wr,wg,wb,br,bg,bb); //\033[38表示前景,\033[48表示背景,三個%d表示混合的數(shù)
}
int main() {
rgb_init();
rgb_set(255,255,255,123,146,70);
cout<<"hello"<<endl;
rgb_set(255,255,255,63,126,130);
cout<<"hello"<<endl;
rgb_set(255,255,255,1,186,200);
cout<<"hello"<<endl;
}
結(jié)束語
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
詳解C語言中telldir()函數(shù)和seekdir()函數(shù)的用法
這篇文章主要介紹了詳解C語言中telldir()函數(shù)和seekdir()函數(shù)的用法,是C語言入門學習中的基礎知識,需要的朋友可以參考下2015-09-09
C/C++程序開發(fā)中實現(xiàn)信息隱藏的三種類型
這篇文章主要介紹了C/C++程序開發(fā)中實現(xiàn)信息隱藏的三種類型的相關資料,需要的朋友可以參考下2016-02-02
C++vector的insert函數(shù)用法小結(jié)
std::vector::insert是C++中用于在指定位置插入元素的函數(shù),支持插入單個元素、多個相同元素、一個范圍的元素或初始化列表中的元素,插入操作可能會使插入點之后的迭代器失效,并且時間復雜度為O(n),本文介紹C++vector的insert函數(shù)用法小結(jié),感興趣的朋友一起看看吧2025-03-03

