以下のコードですが参考サイトを参考に作っています。が色の数がそんなに多くないのですがもっといろんな階調の変えたいのですが何か方法はあるのでしょうか?
参考サイト: https://www.serendip.ws/archives/4635
cpp
1#include "ColorPrintf.hpp" 2#include <string> 3#include <iostream> 4 5#include "stdarg.h" 6#include <cstdarg> 7 8 9ColorPrintf::ColorPrintf() 10{ 11 12} 13 14// レンダリング関数 背景色 前景色 文字列 15void ColorPrintf::RenderText(Color_Code Back, Color_Code Front, const char* format,...) { 16 17 //色指定子を取得 18 std::string front = getColorFront(Front); 19 std::string back = getColorBack(Back); 20 21 //文字を生成 22 std::string text; //生成した文字を格納 23 va_list ap; 24 char str[1000]; 25 va_start(ap, format); 26 vsprintf_s(str, sizeof(str), format, ap); 27 va_end(ap); 28 text = std::string(str); 29 30 //最後に元に戻す 31 char reset_front[6] = "\x1b[39m"; 32 char reset_back[6] = "\x1b[49m"; 33 34 35 printf("\x1b[1m %s%s%s%s%s",front.c_str(),back.c_str(),text.c_str(),reset_back,reset_front); 36 37} 38 39//色コードを取得 前景色 40std::string ColorPrintf::getColorFront(Color_Code& color) 41{ 42 switch (color) 43 { 44 case Color_Code::Black: 45 return black_front; 46 break; 47 48 case Color_Code::Red: 49 return red_front; 50 break; 51 52 case Color_Code::Green: 53 return green_front; 54 break; 55 56 case Color_Code::Yellow: 57 return yellow_front; 58 break; 59 60 case Color_Code::Blue: 61 return blue_front; 62 break; 63 64 case Color_Code::Magenta: 65 return magenta_front; 66 break; 67 68 case Color_Code::Cyan: 69 return cyan_front; 70 break; 71 72 case Color_Code::Gray: 73 return gray_front; 74 break; 75 76 default://エラー処理 77 std::string name = "無効なコードです。 Color_Code\n"; 78 return name;//Color_Code::Invalid; 79 break; 80 81 }; 82} 83 84 85//色コードを取得 背景色 86std::string ColorPrintf::getColorBack(Color_Code& color) 87{ 88 switch (color) 89 { 90 case Color_Code::Black: 91 return black_back; 92 break; 93 94 case Color_Code::Red: 95 return red_back; 96 break; 97 98 case Color_Code::Green: 99 return green_back; 100 break; 101 102 case Color_Code::Yellow: 103 return yellow_back; 104 break; 105 106 case Color_Code::Blue: 107 return blue_back; 108 break; 109 110 case Color_Code::Magenta: 111 return magenta_back; 112 break; 113 114 case Color_Code::Cyan: 115 return cyan_back; 116 break; 117 118 case Color_Code::Gray: 119 return gray_back; 120 break; 121 122 default://エラー処理 123 std::string name = "無効なコードです。 Color_Code\n"; 124 return name;//Color_Code::Invalid; 125 break; 126 127 }; 128} 129 130 131ColorPrintf::~ColorPrintf() 132{ 133 134}
表示させたいコンソールの種類は決まっていますか?
回答1件
あなたの回答
tips
プレビュー