Очередное решение задачи по книге Лукин С.Н. — Понятно о Visual Basic .NET. Cамоучитель (в 3-х томах)

Условие: В самом углу прямоугольного двора стоит прямоугольный дом. Подсчитать площадь дома, свободную площадь двора и длину забора. В углу, где дом, забора, естественно, нет. Размеры дома и двора вводим при помощи InputBox. Все числа целые.
Решение:
Public Class Form1
'объявляем глобальные переменные, так как будут использоваться в нескольких кнопках
Dim dlina_doma As Integer 'длина дома
Dim shirina_doma As Integer 'ширина дома
Dim dlina_dvora As Integer 'длина участка
Dim shirina_dvora As Integer 'ширина участка
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
'объявляем переменную для рисования в picturebox
Dim graf As Graphics
graf = PictureBox1.CreateGraphics
'присваиваем значения с текстовых полей
dlina_doma = Val(TextBox1.Text)
shirina_doma = Val(TextBox2.Text)
dlina_dvora = Val(TextBox3.Text)
shirina_dvora = Val(TextBox4.Text)
'рисуем двор(ширину и длину умножаем на 5, для большей видимости плана)
graf.DrawRectangle(Pens.Black, 10, 10, shirina_dvora * 5, dlina_dvora * 5)
'рисуем дом(ширину и длину умножаем на 5, для большей видимости плана)
graf.FillRectangle(Brushes.Brown, 10, 10, shirina_doma * 5, dlina_doma * 5)
End Sub
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
'объявляем локальные переменные
Dim s_dvora As Integer
Dim s_doma As Integer
Dim s_svobodn_dvora As Integer
Dim l_zabora As Integer
'присваиваем значения с текстовых полей
dlina_doma = Val(TextBox1.Text)
shirina_doma = Val(TextBox2.Text)
dlina_dvora = Val(TextBox3.Text)
shirina_dvora = Val(TextBox4.Text)
'делаем рассчёт
s_dvora = Val(dlina_dvora) * Val(shirina_dvora)
s_doma = Val(dlina_doma) * Val(shirina_doma)
s_svobodn_dvora = s_dvora - s_doma
l_zabora = (2 * dlina_dvora + 2 * shirina_dvora) - (dlina_doma + shirina_doma)
'выводим в текстовое поле
TextBox5.Text = s_dvora
TextBox6.Text = s_doma
TextBox7.Text = s_svobodn_dvora
TextBox8.Text = l_zabora
End Sub
Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
'стираем текстовые поля
TextBox1.Text = ""
TextBox2.Text = ""
TextBox3.Text = ""
TextBox4.Text = ""
TextBox5.Text = ""
TextBox6.Text = ""
TextBox7.Text = ""
TextBox8.Text = ""
'стираем рисунок
PictureBox1.Image = Nothing
End Sub
End Class
Решил чуть изменить решение и вводить данные не с помощью inputbox , а в текстовом поле, так как эта программка мне самому в дальнейшем понадобиться, и вводить данные на текстовом поле более удобно.
- Объявил глобальные переменные, которые будут применяться на нескольких кнопках
- На кнопке рисования объявил новый объект graf для рисования
- присвоил значения текстовых полей переменным
- нарисовал двор и дом в нём . Важно!!! Расчёты проводятся с учётом того, что две стороны дома соприкасаются с забором
- на кнопке расчёта объявил локальные переменные, так как они больше нигде использоваться не будут
- присвоил значение переменным и на этой кнопке, чтобы можно было произвести расчёт без необходимости рисования двора и дома. Иначе расчёт проводился бы только после прорисовки участка и дома.
- вывел значения в текстовом поле
- всё стираем, сбрасываем для нового расчёта. Если использовать picturebox1.dispose() — то удалили вообще бы объекты из памяти и пришлось бы заново запускать программу. PictureBox1.Image=Nothihg только удаляет нарисованное, сохраняя фон.
Программа работает только с целыми числами.
Программу расчёт площади домовладения можно скачать. Установки не требует. Файл exe. Размер 29kb. На компьютере должен быть установлен net.framework 3.5 и выше.