匿名用户__ 2021-03-13 22:21 采纳率: 0%
浏览 60

C++ 设置字体背景色

C++如何设置控制台字体背景色,要255*255*255种色彩的那种

system("color")和SetConsoleTextAttribute()都只有16种颜色。我现在知道设置字体前景色的方法,请问谁知道怎么设置背景色吗?

#include <stdio.h>
#include <wchar.h>
#include <windows.h>

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();
	for (int i = 0; i <= 255; i+=5) {
		for (int j = 0; j <= 255; j+=5) {
			for (int k = 0; k <= 255; k+=5) {
				wprintf(L"\x1b[38;2;%d;%d;%dm@@@@@\t", i, j, k);
			}
		}
	}
	return 0;
}

▲设置字体前景颜色的方法

  • 写回答

1条回答 默认 最新

  • include_iostream_ 2021-03-13 22:38
    关注

    建议尝试通过GetConsoleMode和SetConsoleMode设置,给stdin对应句柄添加ENABLE_VIRTUAL_TERMINAL_INPUT属性,stdout和stderr对应句柄添加ENABLE_VIRTUAL_TERMINAL_PROCESSING,设置好后终端将会支持ANSI转义序列(ANSI escape sequence)。

    #include <iostream>
    #include <fstream>
    #include <cstdio>
    #include <cstdlib>
    #include <cmath>
    #include <algorithm>
    #include <Windows.h>
    using namespace std;
    
    int main() {
    	HANDLE hIn = GetStdHandle(STD_INPUT_HANDLE);
    	HANDLE hOut = GetStdHandle(STD_OUTPUT_HANDLE);
    	DWORD dwInMode, dwOutMode;
    	GetConsoleMode(hIn, &dwInMode);
    	GetConsoleMode(hOut, &dwOutMode);
    	dwInMode |= ENABLE_VIRTUAL_TERMINAL_INPUT;
    	dwOutMode |= ENABLE_VIRTUAL_TERMINAL_PROCESSING;
    	SetConsoleMode(hIn, dwInMode);
    	SetConsoleMode(hOut, dwOutMode);
    	printf("\033[48;2;173;20;83mBackground is changed\033[0m\n");
    	return 0;
    }
    

    关于ANSI转义序列:https://blog.csdn.net/ScilogyHunter/article/details/106874395

    这个方法基本上是跨平台的(只要目标平台支持VT-100终端转义语法),在linux下可以直接printf,不用设置那么多东西。

    评论

报告相同问题?

悬赏问题

  • ¥15 mysql中时间处理问题
  • ¥20 讲解此音频放大电路原理及关键部分
  • ¥15 rtsp 转 m3u8 执行后卡在Decoding VUI
  • ¥20 微信小程序转发链接问题,已禁止转发仍能转发的场景
  • ¥15 关于#硬件架构#的问题:根据开片的IC来判断是哪一款
  • ¥15 matlab simulink
  • ¥15 rtos搭建sip协议开发包
  • ¥100 TM4C1290NCPDT 在线调试
  • ¥15 window系统获取某进程打开的文件路径
  • ¥15 bootstrap 表格不对齐,不对齐