Почему System.Рисование.Цвет не является перечислением

#c# #struct #colors #enums

#c# #структура #Цвет #перечисления

Вопрос:

Почему System.Drawing.Color структура и System.ConsoleColor перечисление?

Ответ №1:

Потому что консоль поддерживает только небольшой набор цветов, в то System.Drawing время как моделирует все возможные 24-битные цвета (32-битные с альфа). Это более 4 миллиардов возможных цветов, что было бы большим перечислением!

Вот цвета консоли:

введите описание изображения здесь

Существует 16 цветов переднего плана плюс 16 цветов фона.

Обратите внимание, что в System.Drawing некоторых цветах даны имена, но они не являются перечислением — это статические поля, такие как Color.Red и Color.Aquamarine .

То же самое верно System.Windows.Media.Color для (как используется в WPF).

Ответ №2:

Потому что для консоли существует 16 хорошо известных цветов, но 16777216 цветов (плюс 256 альфа-уровней для каждого), которые можно использовать в целом. Вы хотели бы назвать все 4 миллиарда из них и написать код, который затем преобразует эти перечисления обратно в фактические значения RGBA?