Решение задачи номер 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
Разбор кода
- На форму помещаем кнопку и PictureBox. Заливаем в чёрный цвет (свойство BackColor)
- Объявляем переменную для рисования, указываем, что рисовать будем на форме.
- Объявляем переменные для начала точек отрезка (середина формы) и конца случайных отрезков до высоты и ширины формы.Также объявляем переменные для цикла.
- Так как пока не можем написать код для случайного цвета, пишем как ранее в Мыльных пузырях код из 4 цветовых линий
- Следует учесть, что если мы не будем менять рандомную конечную точку после рисования каждого отрезка, то все 4 отрезка будут находится в одних и техже координатах, и цвет отрезка в итоге будет только один, тот, который используется последним.
- Готово
о программе
- Скачать программу: Сноп света в глаза
- Установки не требует.
- Файл exe. Размер 21kb.
- На компьютере должен быть установлен net.framework 3.5 и выше.
Внимание!!! На некоторых компьютерах, у меня к примеру, система не даёт запускаться файлам с расширением .Exe . Всё просто, эти файлы исполняемые, и система их блокирует, как и любой файл Exe от сторонних разработчиков. В моих программах вирусов нет, можно проверить на любом сайте онлайн проверки на вирусы, или сам файл антивирусником. Если вы всё равно остерегаетесь, то используйте сам код программы в Visual Studio.net 2008