Системные и известные NET цвета


Класс Color C# NET может представлять более шестнадцати миллионов цветовых оттенков с более чем двумястами пятьюдесятью уровнями прозрачности. Однако часто требуется простой, именованный цвет или системный цвет. Они могут быть получены с помощью перечисления KnownColor.



Известные цвета

Когда вы работаете с цветами, вы почти наверняка будете использовать цветовую структуру. Этот тип позволяет представлять цвета, используя свойства для красных, зеленых и синих элементов цвета, а также альфа-значение, которое определяет, насколько непрозрачным выглядит цвет. Значение альфа, равное нулю, является полностью прозрачным,а значение 255 - не прозрачным. Вместе Альфа, красный, зеленый и синий элементы дают значение ARGB.

Во многих случаях точный контроль цвета не требуется. Вместо этого вы можете выбрать из определенного набора именованных цветов. Перечисление KnownColor предоставляет такую коллекцию цветов, каждый из которых имеет имя, которое может быть преобразовано в значения ARGB. Чтобы выполнить преобразование, вы просто передаете значение KnownColor в метод FromKnownColor структуры цвета, который является статическим методом C#.

using System.Drawing;
KnownColor kc = KnownColor.Red;
Color c = Color.FromKnownColor(kc);
Console.WriteLine("R: {0}", c.R);
Console.WriteLine("G: {0}", c.G);
Console.WriteLine("B: {0}", c.B); /* ВЫХОД Р: 255Г: 0B: 0 */
Кроме того, перечисление KnownColor содержит константы, относящиеся к системным цветам, таким как цвет рабочего стола или фона окна. Эти цвета варьируются в зависимости от предпочтений пользователя. Существует большое количество таких цветов, которые могут быть получены и преобразованы в значение цвета. Они заключаются в следующем:

  • ActiveBorder. Представляет цвет границы активных окон.
  • ActiveCaption. Представляет цвет строки заголовка для активных окон.
  • ActiveCaptionText. Представляет цвет текста строки заголовка для активных окон.
  • AppWorkspace. Представляет цвет рабочей области приложения, который является фоновым цветом для окон интерфейса нескольких документов (MDI).
  • ButtonFace. Представляет основной цвет для кнопок и других элементов окна с трехмерным внешним видом. Это свойство доступно в .NET 2.0 и более поздних версиях.
  • ButtonHighlight. Представляет цвет подсветки для кнопок и других элементов окна с трехмерным внешним видом. Это свойство доступно в .NET 2.0 и более поздних версиях.
  • ButtonShadow. Представляет цвет тени для кнопок и других элементов окна с трехмерным внешним видом. Это свойство доступно в .NET 2.0 и более поздних версиях.
  • Control. Представляет основной цвет для элементов окна, которые имеют трехмерный вид.
  • ControlDark. Представляет цвет тени для элементов окна с трехмерным внешним видом.
  • ControlDarkDark. Представляет темный цвет тени для элементов окна с трехмерным внешним видом.
  • ControlLight. Представляет цвет подсветки для элементов окна с трехмерным внешним видом.
  • ControlLightLight. Представляет светлый цвет подсветки для элементов окна с трехмерным внешним видом.
  • ControlText. Представляет цвет текста для элементов окна с трехмерным внешним видом.
  • Desktop. Представляет цвет рабочего стола. Это цвет фона для Microsoft Windows, который виден, когда не были применены обои или шаблон.
  • GradientActiveCaption. Представляет цвет, примененный к строке заголовка активных окон для формирования градиента с цветом ActiveCaption. Это свойство доступно в .NET 2.0 и более поздних версиях.
  • GradientInactiveCaption. Представляет цвет, примененный к строке заголовка неактивных окон для формирования градиента с цветом InactiveCaption. Это свойство доступно в .NET 2.0 и более поздних версиях.
  • GrayText. Представляет цвет текста, который был "серым".
  • Highlight. Представляет цвет фона выделенного или выделенного текста.
  • HighlightText. Представляет цвет переднего плана текста, который был выбран или выделен.
  • HotTrack. Представляет цвет, используемый для обозначения элемента, который отслеживается по горячим следам.
  • InactiveBorder. Представляет цвет границы неактивных окон.
  • InactiveCaption. Представляет цвет строки заголовка для неактивных окон.
  • InactiveCaptionText. Представляет цвет текста строки заголовка для неактивных окон.
  • Info. Представляет цвет фона подсказок.
  • InfoText. Представляет цвет текста подсказок инструмента.
  • Menu. Представляет цвет фона меню.
  • MenuBar. Представляет цвет фона строк меню.
  • MenuHighlight. Представляет цвет фона выбранных или выделенных элементов в плоских меню. Это свойство доступно в .NET 2.0 и более поздних версиях.
  • MenuText. Представляет цвет текста пунктов меню.
  • ScrollBar. Представляет цвет фона полос прокрутки.
  • Window. Представляет цвет фона клиентской области окна.
  • WindowFrame. Представляет цвет границы для клиентских областей окна.
  • WindowText. Представляет цвет текста клиентских областей windows.
Следующий код получает основной цвет для кнопок и трехмерных элементов и выводит красные, зеленые и синие значения для цвета. Результаты зависят от ваших настроек Windows, поэтому могут отличаться от тех, которые показаны в комментарии.

using System.Drawing;
KnownColor kc = KnownColor.ButtonFace;
Color c = Color.FromKnownColor(kc);
Console.WriteLine("R: {0}", c.R);
Console.WriteLine("G: {0}", c.G);
Console.WriteLine("B: {0}", c.B); /* OUTPUT R: 240G: 240B: 240 */
Получение известного цвета из экземпляра Color

Если вы создали значение цвета из KnownColor, будь то именованный или системный цвет, вы можете прочитать значение KnownColor, используя метод ToKnownColor Color. Однако, если цвет был создан из значения ARGB, вызывающего этот метод, возвращает ноль, даже если значение ARGB полностью соответствует значению известного цвета.

Приведенный ниже код на языке си шарп создает ButtonFace из системного цвета, прежде чем получить известный цвет и вывести значение.

Color c = Color.FromKnownColor(KnownColor.ButtonFace);
KnownColor kc = c.ToKnownColor();
Console.WriteLine(kc);
// ButtonFace
Можно использовать три свойства, чтобы определить, использовался ли известный цвет при создании экземпляра значения цвета. Каждый возвращает логическое значение:
  • IsKnownColor. Если true, то значение цвета является известным цветом. Свойство возвращает false, если значение было создано из красных, зеленых и синих элементов, даже если эти элементы соответствуют известному цвету.
  • IsSystemColor. Это свойство имеет значение true для значений цвета, созданных из одного из системных цветов, которые изменяются в зависимости от конфигурации пользователя.
  • IsNamedColor. Это свойство имеет значение true, если значение цвета было создано из KnownColor или путем предоставления имени цвета методу FromName.
Color c = Color.FromKnownColor(KnownColor.AliceBlue);
Console.WriteLine(c.IsKnownColor);
trueConsole.WriteLine(c.IsNamedColor);
trueConsole.WriteLine(c.IsSystemColor); // false
Системные цвета

Другим способом получения системных цветов является класс SystemColors. Он содержит ряд статических свойств, которые отражают системные значения цвета в перечислении KnownColor. Каждое свойство возвращает цвет. Приведенный ниже код демонстрирует это, получая цвет лица кнопки и выводя значения красного, зеленого и синего элементов.

Color c = SystemColors.ButtonFace;Console.WriteLine(c.IsKnownColor);
trueConsole.WriteLine(c.IsNamedColor);
trueConsole.WriteLine(c.IsSystemColor); // true
Автор этого материала - я - Пахолков Юрий. Я оказываю услуги по написанию программ на языках Java, C++, C# (а также консультирую по ним) и созданию сайтов. Работаю с сайтами на CMS OpenCart, WordPress, ModX и самописными. Кроме этого, работаю напрямую с JavaScript, PHP, CSS, HTML - то есть могу доработать ваш сайт или помочь с веб-программированием. Пишите сюда.

тегизаметки, си шарп, цвет, .NET




Отправляя сообщение я подтверждаю, что ознакомлен и согласен с политикой конфиденциальности данного сайта.




Урок 13. Математические операторы присваивания
Простая реализация алгоритма быстрого поиска на Java
Программа Карточный помощник