欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

C++之如何設置字體顏色

 更新時間:2023年08月04日 09:47:07   作者:匿名用戶__  
很多C++的初學者發(fā)現(xiàn),控制臺的顏色永遠是黑白的,這未免太單調(diào)了,怎么才能使字體像那些軟件一樣呈彩色呢?現(xiàn)在,我們就將學習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~15BackC表示背景色,取值也是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;
}

運行結(jié)果

方法三: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é)果

結(jié)束語

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • 詳解C語言中telldir()函數(shù)和seekdir()函數(shù)的用法

    詳解C語言中telldir()函數(shù)和seekdir()函數(shù)的用法

    這篇文章主要介紹了詳解C語言中telldir()函數(shù)和seekdir()函數(shù)的用法,是C語言入門學習中的基礎知識,需要的朋友可以參考下
    2015-09-09
  • C/C++中抽象類詳解及其作用介紹

    C/C++中抽象類詳解及其作用介紹

    這篇文章主要介紹了C/C++中抽象類詳解及其作用,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-09-09
  • VC多線程編程詳解

    VC多線程編程詳解

    這篇文章主要介紹了VC多線程編程,實例形式詳細分析了多線程編程的原理與實現(xiàn)方法,具有一定的參考借鑒價值,需要的朋友可以參考下
    2014-10-10
  • C++實現(xiàn)單鏈表的構(gòu)造

    C++實現(xiàn)單鏈表的構(gòu)造

    這篇文章主要為大家詳細介紹了C++實現(xiàn)單鏈表的構(gòu)造,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-04-04
  • C/C++程序開發(fā)中實現(xiàn)信息隱藏的三種類型

    C/C++程序開發(fā)中實現(xiàn)信息隱藏的三種類型

    這篇文章主要介紹了C/C++程序開發(fā)中實現(xiàn)信息隱藏的三種類型的相關(guān)資料,需要的朋友可以參考下
    2016-02-02
  • C++vector的insert函數(shù)用法小結(jié)

    C++vector的insert函數(shù)用法小結(jié)

    std::vector::insert是C++中用于在指定位置插入元素的函數(shù),支持插入單個元素、多個相同元素、一個范圍的元素或初始化列表中的元素,插入操作可能會使插入點之后的迭代器失效,并且時間復雜度為O(n),本文介紹C++vector的insert函數(shù)用法小結(jié),感興趣的朋友一起看看吧
    2025-03-03
  • C++類型轉(zhuǎn)換的深入總結(jié)

    C++類型轉(zhuǎn)換的深入總結(jié)

    這篇文章主要給大家介紹了關(guān)于C++類型轉(zhuǎn)換的深入總結(jié),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-12-12
  • C語言中的二叉樹和堆詳解

    C語言中的二叉樹和堆詳解

    這篇文章主要介紹了C語言中的二叉樹和堆詳解,樹是一種非線性的數(shù)據(jù)結(jié)構(gòu),它是由n(n>=0)個有限結(jié)點組成一個具有層次關(guān)系的集合,把它叫做樹是因為它看起來像一棵倒掛的樹,也就是說它是根朝上,而葉朝下的,需要的朋友可以參考下
    2023-07-07
  • c++中的指針最全總結(jié)

    c++中的指針最全總結(jié)

    指針是整個C++的精髓所在,只有精通了指針才可以說是掌握了C++,可以說學習C++的過程是個熟練掌握和使用指針的過程,下面這篇文章主要給大家介紹了關(guān)于c++中指針的相關(guān)資料,需要的朋友可以參考下
    2024-04-04
  • 深入了解C++函數(shù)重載解析策略

    深入了解C++函數(shù)重載解析策略

    這篇文章主要為大家詳細介紹了C++中函數(shù)重載的解析策略,文中的示例代碼講解詳細,對我們學習C++有一定幫助,感興趣的小伙伴可以了解一下
    2022-10-10

最新評論