ПОНЯТНО О Visual Basic NET (том 2)

Прозрачность


Функция FromArgb позволяет управлять прозрачностью цвета. Для этого используется ее вариант не с тремя, а с четырьмя параметрами. Второй, третий и четвертый параметры имеют привычный нам смысл количества красной, зеленой и синей краски. А вот первый параметр определяет прозрачность цвета. Если он равен 255, то цвет полностью непрозрачен, а если 0 – то полностью прозрачен (невидим).

Вот программа:

Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click

        Dim Гр As Graphics = Me.CreateGraphics

        Dim Цвет1, Цвет2, Цвет3, Цвет4 As Color

        Цвет1 = Color.FromArgb(255, 50, 130, 152)       'Совершенно непрозрачный цвет

        Цвет2 = Color.FromArgb(200, 50, 130, 152)       'Немного прозрачный цвет

        Цвет3 = Color.FromArgb(150, 50, 130, 152)       'Более прозрачный цвет

        Цвет4 = Color.FromArgb(100, 50, 130, 152)       'Еще более прозрачный цвет

        Dim Перо As New Pen(Color.Black, 40)              'Черное перо для горизонтальной линии

        Dim Перо1 As New Pen(Цвет1, 40)

        Dim Перо2 As New Pen(Цвет2, 40)

        Dim Перо3 As New Pen(Цвет3, 40)



        Dim Перо4 As New Pen(Цвет4, 40)

        Гр.DrawLine(Перо, 30, 100, 300, 100)              'Чертим горизонтальную линию

        Гр.DrawLine(Перо1, 80, 60, 80, 200)                'Чертим левую вертикальную линию

        Гр.DrawLine(Перо2, 130, 60, 130, 200)            'Чертим вторую слева вертикальную линию

        Гр.DrawLine(Перо3, 180, 60, 180, 200)            'Чертим третью слева вертикальную линию

        Гр.DrawLine(Перо4, 230, 60, 230, 200)            'Чертим правую вертикальную линию

End Sub

Результат ее работы вы видите на Рис. 12.21. Четыре вертикальные линии одного и того же цвета (50, 130, 152), но разной прозрачности нарисованы на фоне черной горизонтальной линии.

Рис. 12.21

Попробуйте несколько раз нажать на кнопку. Сможете объяснить результат?

Задание 71.    

«Атака абстракциониста». На экране рисуются один за другим в быстром темпе залитые случайными цветами эллипсы или прямоугольники случайных размеров и местоположения. Получается очень ярко и живописно.


Задание 72.          
Попробуйте из картинки в левой части Рис. 12.22 сделать картинку в правой.
  

Рис. 12.22
Указание: Для этого заполните пространство фотографии белыми концентрическими эллипсами с разной прозрачностью.
Задание 73.          
Представьте себе куб, собранный из множества кубиков. Его высота – 256 кубиков, ширина и толщина – тоже по 256 кубиков. Получается ровно  16777216 кубиков – по числу цветов в VB. Каждый кубик покрашен в свой цвет. Цвета не повторяются. Система раскраски такая. Слева направо растет от 0 до 255 красная составляющая в цвете кубиков, сверху вниз – зеленая, от нас вдаль – синяя. Так что самый левый верхний ближний кубик получается абсолютно черным, а самый правый нижний дальний кубик – абсолютно белым. Сразу все кубики видеть мы, конечно, не можем, но мы можем делать срез куба в любом месте параллельно любой из его граней, в результате чего на срезе будем видеть квадрат, состоящий из 256*256 разноцветных квадратиков. Вот эту задачу среза я бы и хотел вам предложить. Программа просит пользователя выбрать один из трех основных цветов (это удобно сделать через меню) и его насыщенность (число от 0 до 255). Этим определяется место среза. Затем программа чертит на форме этот разноцветный срез. Конечно, квадратики получатся очень маленькими, но это ничего.
Указание: Используйте процедуру с двумя параметрами: выбранный пользователем цвет (один из трех) и его насыщенность.
Кстати, догадайтесь, из каких цветов составлена главная диагональ куба, проведенная между двумя упомянутыми мной кубиками.

Содержание раздела