🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

Q&A

解決済

1回答

1327閲覧

printf();でRGB 255を使って色をフルカラーで切り替える方法があるのかどうか?

退会済みユーザー

退会済みユーザー

総合スコア0

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

0グッド

0クリップ

投稿2020/12/01 08:04

以下のコードですが参考サイトを参考に作っています。が色の数がそんなに多くないのですがもっといろんな階調の変えたいのですが何か方法はあるのでしょうか?

参考サイト: 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}

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

maisumakun

2020/12/01 08:19

表示させたいコンソールの種類は決まっていますか?
guest

回答1

0

ベストアンサー

エスケープシーケンスで設定できる色は16色しかなかったかと。

投稿2020/12/01 08:16

y_waiwai

総合スコア88038

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問