最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C++之如何設(shè)置字體顏色

 更新時(shí)間:2023年08月04日 09:47:07   作者:匿名用戶__  
很多C++的初學(xué)者發(fā)現(xiàn),控制臺(tái)的顏色永遠(yuǎn)是黑白的,這未免太單調(diào)了,怎么才能使字體像那些軟件一樣呈彩色呢?現(xiàn)在,我們就將學(xué)習(xí)C++ 設(shè)置字體顏色的方法

方法一:system(“color”)

system函數(shù)想必大家都聽(tīng)說(shuō)過(guò),它可以用來(lái)設(shè)置字體的顏色,只需要在color后加上字體的背景色前景色,

取值如下:

符號(hào)表示顏色符號(hào)表示顏色
0黑色8灰色
1藍(lán)色9淡藍(lán)色
2綠色A淡綠色
3淺綠色B淡淺綠色
4紅色C淡紅色
5紫色D淡紫色
6黃色E淡黃色
7白色F亮白色

接下來(lái),我們就可以通過(guò)system("color")設(shè)置字體顏色了,

下面的代碼就可以將字體設(shè)為白底黑字:

#include <bits/stdc++.h>
using namespace std;
int main() {
	system("color F0");
	cout<<"hello"<<endl;
	return 0;
}

方法二:SetConsoleTextAttribute

在使用system("color")的時(shí)候,你會(huì)發(fā)現(xiàn),一旦使用該函數(shù),整個(gè)窗口都會(huì)被改變顏色。

那么如何設(shè)置單個(gè)字的顏色呢?

這就要用到SetConsoleTextAttribute函數(shù)了,他需要頭文件<windows.h>。

void SetColorAndBackground(int ForgC, int BackC) {
	WORD wColor = ((BackC & 0x0F) << 4) + (ForgC & 0x0F);
	SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), wColor);
}

SetConsoleTextAttribute實(shí)際上需要混合顏色的,但為了方便使用 ,我們將他轉(zhuǎn)換成以上函數(shù),ForgC表示前景色,取值范圍從1~15BackC表示背景色,取值也是1~15

我們就來(lái)做一個(gè)簡(jiǎn)單的測(cè)試:

#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;
}

運(yùn)行結(jié)果

方法三:ANSI轉(zhuǎn)義序列

學(xué)習(xí)了SetConsoleTextAttribute函數(shù),你會(huì)發(fā)現(xiàn),SetConsoleTextAttribute中只有16種顏色,里面既沒(méi)有橘色也沒(méi)有棕色。

現(xiàn)在我們就來(lái)學(xué)習(xí)RGB顏色——ANSI,需要添加頭文件<windows>。

ANSI只適用于Windows10的用戶,其他版本不支持 詳見(jiàn)此處

void rgb_init() {																// 初始化
	HANDLE hIn = GetStdHandle(STD_INPUT_HANDLE);		//輸入句柄
	HANDLE hOut = GetStdHandle(STD_OUTPUT_HANDLE);		//輸出句柄
	DWORD dwInMode, dwOutMode;
	GetConsoleMode(hIn, &dwInMode);						//獲取控制臺(tái)輸入模式
	GetConsoleMode(hOut, &dwOutMode);					//獲取控制臺(tái)輸出模式
	dwInMode |= 0x0200;									//更改
	dwOutMode |= 0x0004;
	SetConsoleMode(hIn, dwInMode);						//設(shè)置控制臺(tái)輸入模式
	SetConsoleMode(hOut, dwOutMode);					//設(shè)置控制臺(tái)輸出模式
}
void rgb_set(int wr,int wg,int wb,int br,int bg,int bb) {						//設(shè)置RGB
	printf("\033[38;2;%d;%d;%dm\033[48;2;%d;%d;%dm",wr,wg,wb,br,bg,bb);	//\033[38表示前景,\033[48表示背景,三個(gè)%d表示混合的數(shù)
}

我們先來(lái)看一下代碼,rgb_init用來(lái)初始化ANSI(不然會(huì)亂碼),接下來(lái)用rgb_init設(shè)置字體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);						//獲取控制臺(tái)輸入模式
	GetConsoleMode(hOut, &dwOutMode);					//獲取控制臺(tái)輸出模式
	dwInMode |= 0x0200;									//更改
	dwOutMode |= 0x0004;
	SetConsoleMode(hIn, dwInMode);						//設(shè)置控制臺(tái)輸入模式
	SetConsoleMode(hOut, dwOutMode);					//設(shè)置控制臺(tái)輸出模式
}
void rgb_set(int wr,int wg,int wb,int br,int bg,int bb) {						//設(shè)置RGB
	printf("\033[38;2;%d;%d;%dm\033[48;2;%d;%d;%dm",wr,wg,wb,br,bg,bb);	//\033[38表示前景,\033[48表示背景,三個(gè)%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;
}

運(yùn)行結(jié)果

結(jié)束語(yǔ)

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

相關(guān)文章

  • c語(yǔ)言中的二級(jí)指針做函數(shù)參數(shù)說(shuō)明

    c語(yǔ)言中的二級(jí)指針做函數(shù)參數(shù)說(shuō)明

    這篇文章主要介紹了c語(yǔ)言中的二級(jí)指針做函數(shù)參數(shù)說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-05-05
  • C++庫(kù)std::flush的具體使用

    C++庫(kù)std::flush的具體使用

    std::flush是C++標(biāo)準(zhǔn)庫(kù)中的一個(gè)操作符,用于刷新輸出流,本文主要介紹了C++庫(kù)std::flush的具體使用,具有一定的參考價(jià)值,感興趣的可以了解一下
    2024-02-02
  • C語(yǔ)言編程中從密碼文件獲取數(shù)據(jù)的函數(shù)總結(jié)

    C語(yǔ)言編程中從密碼文件獲取數(shù)據(jù)的函數(shù)總結(jié)

    這篇文章主要介紹了C語(yǔ)言編程中從密碼文件獲取數(shù)據(jù)的函數(shù)總結(jié),包括getpw()函數(shù)和getpwnam()函數(shù)以及getpwuid()函數(shù),需要的朋友可以參考下
    2015-08-08
  • C語(yǔ)言每日練習(xí)之動(dòng)態(tài)顯示系統(tǒng)時(shí)間

    C語(yǔ)言每日練習(xí)之動(dòng)態(tài)顯示系統(tǒng)時(shí)間

    這篇文章主要介紹了C語(yǔ)言動(dòng)態(tài)顯示系統(tǒng)時(shí),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-11-11
  • vscode搭建STM32開(kāi)發(fā)環(huán)境的詳細(xì)過(guò)程

    vscode搭建STM32開(kāi)發(fā)環(huán)境的詳細(xì)過(guò)程

    這篇文章主要介紹了vscode搭建STM32開(kāi)發(fā)環(huán)境的詳細(xì)過(guò)程,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-05-05
  • C語(yǔ)言中的隱式函數(shù)聲明

    C語(yǔ)言中的隱式函數(shù)聲明

    在c語(yǔ)言里面開(kāi)來(lái)還是要學(xué)習(xí)c++的編程習(xí)慣,使用函數(shù)之前一定要聲明。不然,即使編譯能通過(guò),運(yùn)行時(shí)也可能會(huì)出一些莫名其妙的問(wèn)題。
    2016-01-01
  • C語(yǔ)言自定義類型詳解(結(jié)構(gòu)體、枚舉、聯(lián)合體和位段)

    C語(yǔ)言自定義類型詳解(結(jié)構(gòu)體、枚舉、聯(lián)合體和位段)

    這篇文章主要給大家介紹了關(guān)于C語(yǔ)言中結(jié)構(gòu)體、枚舉、聯(lián)合體和位段自定義類型的相關(guān)資料,分別介紹了結(jié)構(gòu)體、枚舉、聯(lián)合體和位段等四種自定義類型,文中通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2021-08-08
  • C語(yǔ)言實(shí)現(xiàn)頁(yè)面置換算法

    C語(yǔ)言實(shí)現(xiàn)頁(yè)面置換算法

    這篇文章主要為大家詳細(xì)介紹了C語(yǔ)言實(shí)現(xiàn)頁(yè)面置換算法,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-12-12
  • C++實(shí)現(xiàn)LeetCode(88.混合插入有序數(shù)組)

    C++實(shí)現(xiàn)LeetCode(88.混合插入有序數(shù)組)

    這篇文章主要介紹了C++實(shí)現(xiàn)LeetCode(88.混合插入有序數(shù)組),本篇文章通過(guò)簡(jiǎn)要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-07-07
  • C語(yǔ)言實(shí)現(xiàn)停車場(chǎng)管理系統(tǒng)

    C語(yǔ)言實(shí)現(xiàn)停車場(chǎng)管理系統(tǒng)

    這篇文章主要為大家詳細(xì)介紹了C語(yǔ)言實(shí)現(xiàn)停車場(chǎng)管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-11-11

最新評(píng)論

乌拉特前旗| 赤峰市| 莱芜市| 宁德市| 五峰| 新和县| 苍山县| 宁国市| 从江县| 吴川市| 澎湖县| 甘谷县| 深州市| 襄城县| 驻马店市| 滕州市| 阿鲁科尔沁旗| 鹰潭市| 兴宁市| 海口市| 清远市| 饶平县| 陈巴尔虎旗| 固阳县| 乐业县| 鄂托克前旗| 滦南县| 栾城县| 彰化县| 车险| 长沙市| 曲阳县| 新余市| 山阴县| 武平县| 景泰县| 巩留县| 麻城市| 罗江县| 阿拉善右旗| 中卫市|