Начинающий
-
Автор темы
- #1
Всем доброй ночи.
Делаю проект маленький, и не могу сделать цвет который будет привязан к моему Hex значению.
Как можно это реализовать?
Мой код:
Вот пример, только исходя из моего итогового Hex значения, справа рисовать цвет этого Hex значения
Команда для рисования цвета:
Делаю проект маленький, и не могу сделать цвет который будет привязан к моему Hex значению.
Как можно это реализовать?
Мой код:
My Code:
#include <iostream> // hex func, and main func.
#include <string.h> // for hex #
#include <Windows.h> // for show Console
#include <TlHelp32.h> // second func.
#include <sstream> // for stringstream
#include <stdio.h>
#include <fcntl.h>
#include <io.h>
using namespace std; // for deleted std::
//ConsolePX
class ConsolePX
{
public:
wchar_t source;
COLORREF foreground, background;
/* Set at the start ctor */
ConsolePX(wchar_t _what, COLORREF foregroundColor, COLORREF backgroundColor)
{
source = _what;
foreground = foregroundColor;
background = backgroundColor;
}
/* Draws wchar_t with colors to console */
void Draw() {
HANDLE outH = GetStdHandle(STD_OUTPUT_HANDLE);
CONSOLE_SCREEN_BUFFER_INFOEX curr, newBuff;
curr.cbSize = sizeof(CONSOLE_SCREEN_BUFFER_INFOEX);
GetConsoleScreenBufferInfoEx(outH, &curr);
curr.srWindow.Bottom++;
newBuff = curr;
newBuff.ColorTable[0] = background;
newBuff.ColorTable[1] = foreground;
SetConsoleScreenBufferInfoEx(outH, &newBuff);
SetConsoleTextAttribute(outH, 1);
_setmode(_fileno(stdout), _O_U16TEXT); //Sets console mode to 16-bit unicode
std::wcout << source << std::endl;
_setmode(_fileno(stdout), _O_TEXT);
//Restores to defaults
SetConsoleTextAttribute(outH, 7);
SetConsoleScreenBufferInfoEx(outH, &curr);
}
};
// r - RED, g - GREEN, b - BLUE, HexConvertor - rgb to hex.
string rgb2hex(int R, int G, int B, bool HexConvertor) {
stringstream Hexconv;
if (Hexconv)
Hexconv << "#";
Hexconv << hex << (R << 16 | G << 8 | B);
return Hexconv.str();
}
int main() // Main Func
{
int R, G, B;// R - RED, G - GREEN, B - BLUE
printf("Please, Enter 3 (RGB) numbers to Console: \n");
printf("RED - ");
cin >> R;
printf("GREEN - ");
cin >> G;
printf("BLUE - ");
cin >> B;
printf("-------------\n");
printf("You writed 3 Numbers: \nR - %d\nG - %d\nB - %d", R, G, B);
printf("\nHex Number: %s", rgb2hex(R, G, B, true).c_str()); // c_str() for job with strings!!!
return 0;
}
Команда для рисования цвета:
My Code2:
ConsolePX(L'█', RGB(18, 18, 18), RGB(0, 0, 0)).Draw();
Вложения
-
6.8 KB Просмотры: 11
Последнее редактирование: