2016-04-17 2 views
1

Код ConsoleColor.Red даст вам красный цвет справа. Код (ConsoleColor) 3746 даст вам другой цвет. Но каково это число (rgb, hex) и как мне преобразовать в значение rgb наоборот.Каковы значения цвета консоли

+0

Посмотрите здесь: http://www.rapidtables.com/web/color/RGB_Color.htm – Fruchtzwerg

+0

https://msdn.microsoft.com/en-us/library/system.consolecolor(v=vs.110) .aspx Он описывается как перечисление выбора цветов. Таким образом, нет требования, чтобы перечислимое значение представляло фактическое цветовое содержимое каким-либо образом (хотя это означало бы, что есть список для их преобразования где-то в mscorlib.dll). Попробуйте поэкспериментировать с разными номерами, и если последовательные значения генерируют совершенно разные цвета, то, вероятно, он использует список поиска. – PeteB

ответ

5

Во-первых, давайте посмотрим цвета

var colors = Enum.GetValues(typeof(ConsoleColor)).Cast<ConsoleColor>(); 

foreach (var color in colors) 
{ 
    Console.BackgroundColor = color; 
    Console.WriteLine(color); 
} 

Console Colors

Мир консольных цветов 4 бит: один для красного, зеленого и синего цветов, и 1 для интенсивности, которая удваивает насыщенность данный цвет (за исключением серого/белого). Это дает 15 возможных различных цветов. , Соответствующий гекс бы 0, 80 и FF для каждого из красного, зеленого и синего цветов:

Name   R G B 
------------------------- 
Black  00 00 00 
DarkBlue  00 00 80 
DarkGreen 00 80 00 
DarkCyan  00 80 80 
DarkRed  80 00 00 
DarkMagenta 80 00 80 
DarkYellow 80 80 00 
DarkGray  80 80 80 
Blue   00 00 FF 
Green  00 FF 00 
Cyan   00 FF FF 
Red   FF 00 00 
Magenta  FF 00 FF 
Yellow  FF FF 00 
Gray   C0 C0 C0 
White  FF FF FF 

Обратите внимание, что «серый» является нечетным один из. Причиной этого является то, что 4 бита фактически допускают 16 цветов, но только 15 могут быть однозначно закодированы в схеме включения/выключения + интенсивности.

Смежные вопросы