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)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
詳解C語言中telldir()函數(shù)和seekdir()函數(shù)的用法
這篇文章主要介紹了詳解C語言中telldir()函數(shù)和seekdir()函數(shù)的用法,是C語言入門學習中的基礎知識,需要的朋友可以參考下2015-09-09C/C++程序開發(fā)中實現(xiàn)信息隱藏的三種類型
這篇文章主要介紹了C/C++程序開發(fā)中實現(xiàn)信息隱藏的三種類型的相關(guān)資料,需要的朋友可以參考下2016-02-02C++vector的insert函數(shù)用法小結(jié)
std::vector::insert是C++中用于在指定位置插入元素的函數(shù),支持插入單個元素、多個相同元素、一個范圍的元素或初始化列表中的元素,插入操作可能會使插入點之后的迭代器失效,并且時間復雜度為O(n),本文介紹C++vector的insert函數(shù)用法小結(jié),感興趣的朋友一起看看吧2025-03-03