Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
П_З.docx
Скачиваний:
3
Добавлен:
24.08.2019
Размер:
179.91 Кб
Скачать

Инвертирование цветов и вывод цветовых констант

Добавьте новые операторы в метод trackBar1_scroll (листинг 3).

Листинг 3. Новый вариант метода trackBar1_Scroll

private void trackBar1_Scroll(object sender, EventArgs e)

{label6.BackColor = Color.FroraArgb(trackBar1.Value,

trackBar2.Value, trackBar3.Value, trackBar4.Value);

Color с = label6.BackColor;

label6.ForeColor = Color.FromArgb(OxFF A c.R,

OxFF A c.G, OxFF A c.B); label6.Text = с.Name.ToUpper();}

Числовое значение текущего цвета в формате ARGB (Alpha, Red, Green, Blue) отображается на панели в виде шестнадцатеричного числа. При этом для каждой цветовой составляющей отводится по два знака, а буквы А — F (соответствующие шестнадцатеричным цифрам от 10 до 15) изображаются в верхнем регистре. Например, значение цвета Maroon (непрозрачный темно-красный цвет интенсивности 128) имеет вид FF800000. Цвет текста — непрозрачный и инверсный по отношению к цвету фона панели.

При запуске программы метка lаbеl6 содержит текст Color, а не числовое значение непрозрачного черного цвета.

В конструктор класса Form1 добавьте оператор:

trackBar1_Scroll (null, null);

Теперь метод trackBar1_Scroll вызывается в момент создания формы, что обеспечивает правильную настройку внешнего вида метки label6 (при вызове метода оба его параметра можно положить равными null, поскольку в этом методе ни один из параметров не используется).

Отмеченный недочет можно было бы исправить, просто положив значение свойства Text метки label6 равным FF000000 (числовое значение непрозрачного черного цвета). Однако использованный вариант исправления является более гибким, поскольку позволяет правильно отображать начальный вид метки при любых изменениях метода trackBar1_Scroll, которые могут быть сделаны впоследствии (см. разд. 4).

Если прозрачность имеет значение, меньшее 16, то в метке lаbеl6 отображается менее 8 цифр (в частности, при полностью прозрачном черном цвете метка будет содержать единственную цифру 0). Подобный способ представления цвета является не вполне естественным; логичнее всегда отображать шестнадцатеричное число с 8 знаками (по два знака на каждую цветовую составляющую).

В методе trackBar1_Scroll замените последний оператор на следующий:

label6.Text = c.ToArgb() .ToString("X8") ;

Теперь число с.ToArgb () выводится в шестнадцатеричном формате х с заглавными латинскими буквами и обязательными 8 знаками (мы использовали форматирующий вариант метода Tostring для типа int).

Свойства A, R, G, B структуры Color (доступные только для чтения) позволяют получить числовое значение соответствующей цветовой составляющей. Для инвертирования каждого из базовых цветов использована побитовая операция ^ (исключающее ИЛИ). При использовании варианта метода FromArgb с тремя параметрами (R, G, В) предполагается, что прозрачность а равна 255.

Метод ToUpper класса string преобразует все буквенные символы строки к верхнему регистру и возвращает измененную строку (метод, преобразующий буквенные символы к нижнему регистру, имеет имя ToLower). Символы, не являющиеся буквами, не изменяются. Заметим, что методы ToUpper и ToLower правильно обрабатывают не только латинские, но и русские буквы.