关于c++控制台RGB着色
  • 板块学术版
  • 楼主heveral
  • 当前回复6
  • 已保存回复6
  • 发布时间2021/8/18 09:31
  • 上次更新2023/11/4 10:15:02
查看原帖
关于c++控制台RGB着色
485129
heveral楼主2021/8/18 09:31

一个学习c++的人,难免会做亿些小游戏来消遣时间,在这里,我讲解一下如何让你的控制台游戏的显示颜色为256³位色(RGB).

首先,先给大家看一下执行RGB操作的必备头文件

#include<windows.h>
#include<stdio.h>
#include<conio.h>
#include<iostream>
#include<cstdio>

然后进入主题

给大家看一下调用RGB前必须加入的代码段

	HANDLE hOut = GetStdHandle(STD_OUTPUT_HANDLE);
	if (hOut == INVALID_HANDLE_VALUE)return GetLastError();
	DWORD dwMode = 0;
	if (!GetConsoleMode(hOut, &dwMode))return GetLastError();
	dwMode |= 0x0004;
	if (!SetConsoleMode(hOut, dwMode))return GetLastError();

注意这段代码不可省略!

笔者亲测,一旦省略就会出现两种现象:

  • 显示乱码

  • 什么也不显示

最后给大家介绍一下我们的重头戏:调用RGB

二话不说,先上代码

wprintf(L"\x1b[38;2;%d;%d;%dmhello,world!\n", r, g, b);

简不简单?惊不惊讶? 一行代码,直接显示彩色文字"hello,world!"!

然后我讲解一下这个代码然后使用

wprintf(L"\x1b[38;2;%d;%d;%dm|<-你要说的话->|",|<-R值->|,|<-G值->|,|<-B值->|);

注意R值G值B值的取值都在0~256之间

给大家附个RGB颜色对应表

最后

我把这些代码连接到一起方便大家白嫖学习

#include<bits/stdc++.h>
#include<ctime>
#include<windows.h>
#include<stdio.h>
#include<conio.h>
#include<iostream>
#include<cstdio>
#include<time.h>
using namespace std;
int main() {
	HANDLE hOut = GetStdHandle(STD_OUTPUT_HANDLE);
	if (hOut == INVALID_HANDLE_VALUE)return GetLastError();
	DWORD dwMode = 0;
	if (!GetConsoleMode(hOut, &dwMode))return GetLastError();
	dwMode |= 0x0004;
	if (!SetConsoleMode(hOut, dwMode))return GetLastError();
	int r,g,b;
	while(1)
	{
		cin>>r>>g>>b ;
		wprintf(L"\x1b[38;2;%d;%d;%dmhello,world!\n", r, g, b);
	}
}


大家拿走前请标明出处,感谢大家的配合!


----------卒-----------


文章来源:https://bailiwen1.blog.luogu.org/

2021/8/18 09:31
加载中...