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

Программируем части по-отдельности


Ну что ж. Начинаем программировать отдельные части. В каком порядке? Все равно. Но логичнее в том порядке, в каком они появляются на рисунке, а значит в порядке сверху-вниз в теле главной процедуры рисования. Следовательно, начинаем со звездного неба.

Вы спросите, а как же наши процедуры Дерево и Фонарь, над которыми мы так долго трудились? Неужели они не понадобятся? Понадобятся в свое время, причем в полном объеме.

Звездное небо. Прежде чем рисовать звездное небо, надо задать, на каком уровне по вертикали кончается небо и начинается земля. Если мы зададим этот уровень числом, то наверняка это число встретится также при рисовании на горизонте деревьев и фонарей, а может быть и в других процедурах. Так что надо задать это число переменной величиной, а чтобы этой переменной могли пользоваться все процедуры, объявим ее не в теле процедуры, а вне процедур.

Поскольку звездное небо вы уже раньше рисовали, то дальнейшие пояснения не требуются. Вот какое у меня получилось на этом этапе окно кода:

Public Class Form1

    Inherits System.Windows.Forms.Form

Windows Form Designer generated code

    Dim Гр As Graphics

    Dim Уровень_горизонта As Single = 200

    Private Sub Рисуем_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Рисуем.Click

        Гр = Me.CreateGraphics

        Звездное_небо()

    End Sub



    Sub Звездное_небо()

        Dim i, Размер_звезды As Single

        Гр.FillRectangle(Brushes.Black, 0, 0, Me.Width, Уровень_горизонта)      'Черный прямоугольник неба

        For i = 1 To 100                                                                                       'Рисуем сто звезд

            Размер_звезды = 5 * Rnd()

            Гр.FillEllipse(Brushes.White,  _

Me.Width * Rnd(), Уровень_горизонта * Rnd(), Размер_звезды, Размер_звезды)

            Гр.FillEllipse(Brushes.Yellow,  _

Me.Width * Rnd(), Уровень_горизонта * Rnd(), Размер_звезды, Размер_звезды)

            Гр.FillEllipse(Brushes.LightBlue,  _

Me.Width * Rnd(), Уровень_горизонта * Rnd(), Размер_звезды, Размер_звезды)

            Гр.FillEllipse(Brushes.LightPink,  _

Me.Width * Rnd(), Уровень_горизонта * Rnd(), Размер_звезды, Размер_звезды)

        Next i

    End Sub

End Class

Небо – это просто большой черный прямоугольник во всю ширину формы выше уровня горизонта. Мы не видим его краев, так как они совпадают с краями формы или выходят за них После нажатия на кнопку рисования мы увидим черный прямоугольник неба, заполненный разноцветными звездами.



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