Рисуем: Сноп света в глаза

Решение задачи номер 37  Условие:

«Сноп света в глаза». То есть пучок лучей, выходящих из одной точки. Реализуется множеством случайных разноцветных отрезков прямых, причем одна точка всех отрезков не случайна, а находится в центре формы. Хорошо смотрится на черном фоне.

Решение задачи


Public Class Form1

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim graf As Graphics ' объявляем переменную для рисования
        graf = PictureBox1.CreateGraphics 'указываем, что рисовать будем на форме
        Dim x_n As Decimal ' Объявляем переменную начала точки по широте
        Dim y_n As Decimal 'объявляем переменную начала точки по высоте
        Dim x_k As Decimal 'объявляем переменную конец точки по ширине
        Dim y_k As Decimal 'jобъявляем переменную конец точки по высоте
        x_n = PictureBox1.Width / 2 'координаты по ширине середина экрана
        y_n = PictureBox1.Height / 2 'координаты по высоте середина экрана
        x_k = PictureBox1.Width * Rnd() 'координаты конца отрезка по ширине (не дальше ширины)
        y_k = PictureBox1.Height * Rnd() 'координаты конца отрезка по высоте (не дальше длины)
        Dim a, b As Integer 'переменные для счётчика

        For a = 1 To 100
            'блок для задания случайных координат конца отрезка
            x_k = PictureBox1.Width * Rnd()
            y_k = PictureBox1.Height * Rnd()
            'конец блока, в дальнейшем можно сделать функцию
            graf.DrawLine(Pens.Yellow, x_n, y_n, x_k, y_k)
            'блок  случайных чисел надо добавлять всегда перед новым отрезком, 
            'иначе они будут рисоваться друг на друге, и понятно, что цвет будет тот, который был последним
            'в данном случае у нас Blue
            x_k = PictureBox1.Width * Rnd()
            y_k = PictureBox1.Height * Rnd()
            graf.DrawLine(Pens.White, x_n, y_n, x_k, y_k)
            'поэтому с новым блоком случайные координаты конца отрезка постоянно обновляются
            x_k = PictureBox1.Width * Rnd()
            y_k = PictureBox1.Height * Rnd()
            graf.DrawLine(Pens.Red, x_n, y_n, x_k, y_k)
            x_k = PictureBox1.Width * Rnd()
            y_k = PictureBox1.Height * Rnd()
            graf.DrawLine(Pens.Blue, x_n, y_n, x_k, y_k)
            Randomize() 'увеличиваем рандомность появляения

            For b = 1 To 10000000 : Next b
        Next a


    End Sub

End Class

Разбор кода

  1. На форму помещаем кнопку и PictureBox. Заливаем в чёрный цвет (свойство BackColor)
  2. Объявляем переменную для рисования, указываем, что рисовать будем на форме.
  3. Объявляем переменные для начала точек отрезка (середина формы) и конца случайных отрезков до высоты и ширины формы.Также объявляем переменные для цикла.
  4. Так как пока не можем написать код для случайного цвета, пишем как ранее в Мыльных пузырях код из 4 цветовых линий
  5. Следует учесть, что если мы не будем менять рандомную конечную точку после рисования каждого отрезка, то все 4 отрезка будут находится в одних и техже координатах, и цвет отрезка в итоге будет только один, тот, который используется последним.
  6. Готово

о программе

  • Скачать программу: Сноп света в глаза
  • Установки не требует.
  • Файл exe. Размер 21kb.
  • На компьютере должен быть установлен net.framework 3.5 и выше.
Внимание!!! На некоторых компьютерах, у меня к примеру, система не даёт запускаться файлам с расширением .Exe . Всё просто, эти файлы исполняемые, и система их блокирует, как и любой файл Exe от сторонних разработчиков. В моих программах вирусов нет, можно проверить на любом сайте онлайн проверки на вирусы, или сам файл антивирусником. Если вы всё равно остерегаетесь, то используйте сам код программы в Visual Studio.net 2008

 

Запись опубликована в рубрике Мои программы, Решение заданий vb.net. Добавьте в закладки постоянную ссылку.