Мегаобучалка Главная | О нас | Обратная связь  


Используем в рисовании переменные величины




Поможем в ✍️ написании учебной работы
Поможем с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой

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

Если вы нарисовали человечка и паровоз, то наверное согласитесь, что для этого вам пришлось основательно потрудиться, хотя сам рисунок получился не слишком сложным, в нем всего-то порядка двух десятков элементов.

Как заставить VB короткой программой рисовать множество элементов, сплетая их в красивые узоры? Ответ: применять циклы, используя в обращениях к графическим методам вместо чисел переменные величины и арифметические выражения. Поучимся.

Задача: Нарисовать горизонтальный ряд окружностей диаметром 20 на расстоянии 100 от верхнего края формы и с такими горизонтальными координатами 50, 80, 110, 140, ¼ , 290.

Как видим, центры соседних окружностей отстоят друг от друга на 30. Вот примитивный фрагмент, решающий эту задачу:

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

Dim Граф As Graphics = Me.CreateGraphics

Граф.DrawEllipse(Pens.Black, 50, 100, 20, 20)

Граф.DrawEllipse(Pens.Black, 80, 100, 20, 20)

Граф.DrawEllipse(Pens.Black, 110, 100, 20, 20)



Граф.DrawEllipse(Pens.Black, 140, 100, 20, 20)

Граф.DrawEllipse(Pens.Black, 170, 100, 20, 20)

Граф.DrawEllipse(Pens.Black, 200, 100, 20, 20)

Граф.DrawEllipse(Pens.Black, 230, 100, 20, 20)

Граф.DrawEllipse(Pens.Black, 260, 100, 20, 20)

Граф.DrawEllipse(Pens.Black, 290, 100, 20, 20)

End Sub

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

Мы видим, что здесь VB 9 раз выполняет один и тот же метод DrawEllipse, причем при каждом следующем обращении второй параметр метода вырастает на 30.

Придумаем для этого параметра переменную величину, например, х. Немного изменим программу:

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

Dim Граф As Graphics = Me.CreateGraphics

Dim x As Integer = 50

Граф.DrawEllipse(Pens.Black, x, 100, 20, 20) : x = x + 30

Граф.DrawEllipse(Pens.Black, x, 100, 20, 20) : x = x + 30

Граф.DrawEllipse(Pens.Black, x, 100, 20, 20) : x = x + 30

Граф.DrawEllipse(Pens.Black, x, 100, 20, 20) : x = x + 30

Граф.DrawEllipse(Pens.Black, x, 100, 20, 20) : x = x + 30

Граф.DrawEllipse(Pens.Black, x, 100, 20, 20) : x = x + 30

Граф.DrawEllipse(Pens.Black, x, 100, 20, 20) : x = x + 30

Граф.DrawEllipse(Pens.Black, x, 100, 20, 20) : x = x + 30

Граф.DrawEllipse(Pens.Black, x, 100, 20, 20) : x = x + 30

End Sub

В последней строке оператор x = x + 30 я написал только для красоты, от него в ней нет никакой пользы, хотя и вреда тоже особого нет.

Эта программа рисует абсолютно то же самое, что и предыдущая, но она проще нее, так как не пришлось самим вычислять координаты.

Что мы видим? Мы видим, что программа состоит из 9 совершенно одинаковых фрагментов. Это прямое приглашение применить цикл:

Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click

Dim Граф As Graphics = Me.CreateGraphics

Dim x As Integer= 50

Do Until x > 290

Граф.DrawEllipse(Pens.Black, x, 100, 20, 20) : x = x + 30

Loop

End Sub

Эта программа также рисует абсолютно то же самое, что и две предыдущие, но она существенно короче. Здесь я объявил переменную x, как целую. Иначе при многократном прибавлении 30 могло бы оказаться, что результат равен не 290, а, скажем, 290.0000067 (Такой же случай я рассматривал в 8.2). А это значит, что последняя окружность не была бы нарисована. Можно было бы перестраховаться по-другому: вместо Do Until x > 290 написать Do Until x > 291.

Кое-чему мы научились. Когда у вас возникнут проблемы с использованием переменных величин в графических (и не только графических) задачах, постарайтесь пройти по ступенькам, по которым только-что прошел я: от чисел – к одинаковым фрагментам, а от них – к циклу.

Задание 39.

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

Б. Удлините трубу налево и направо до краев формы.

В. Увеличьте толщину трубы.

 

Ряд окружностей наискосок. Заставим окружности вести себя посложнее. Например, расположим их не по горизонтали, а примерно по диагонали формы в направлении от левого верхнего угла вправо вниз.

Начнем с первой ступеньки:

Граф.DrawEllipse(Pens.Black, 0, 0, 20, 20)

Граф.DrawEllipse(Pens.Black, 30, 20, 20, 20)

Граф.DrawEllipse(Pens.Black, 60, 40, 20, 20)

Граф.DrawEllipse(Pens.Black, 90, 60, 20, 20)

На второй ступеньке организуем две переменные: горизонтальную координату x и вертикальную координату у – и заставим их изменяться:

x = 0

y = 0

Граф.DrawEllipse(Pens.Black, x, y, 20, 20) : x = x + 30 : y = y + 20

Граф.DrawEllipse(Pens.Black, x, y, 20, 20) : x = x + 30 : y = y + 20

И наконец мы на последней ступеньке:

Dim x, y As Integer

x = 0

y = 0

Do Until x > 290

Граф.DrawEllipse(Pens.Black, x, y, 20, 20)

x = x + 30

y = y + 20

Loop

Задания. Теперь вы достаточно подготовлены для того, чтобы выполнить следующие задания:

Задание 40.

«Две очереди трассирующими ночью». Мы «перечеркнули» форму окружностями наискосок из левого верхнего угла приблизительно в правый нижний. Пусть теперь это будут очень маленькие кружочки на черной форме. Получилась «очередь трассирующими». Вслед за этим перечеркните форму очередью также и из левого нижнего угла, чтобы на экране получились две пересекающиеся очереди.

Задание 41.

Нарисуйте «трубу» наискосок. Получилось? Теперь попробуйте вместе с координатами x и у менять также и диаметр окружности. Если вы будете понемножку его увеличивать, начиная с 0, то получите «трубопровод», уходящий в бесконечность.

Задание 42.

Начертите ряд квадратов. Получилось? Теперь сделайте «квадратный трубопровод».

Задание 43.

А. Разлинуйте экран в линейку.

Б. А теперь в клетку.

В. А теперь в косую линейку.




Читайте также:
Модели организации как закрытой, открытой, частично открытой системы: Закрытая система имеет жесткие фиксированные границы, ее действия относительно независимы...
Как вы ведете себя при стрессе?: Вы можете самостоятельно управлять стрессом! Каждый из нас имеет право и возможность уменьшить его воздействие на нас...
Как выбрать специалиста по управлению гостиницей: Понятно, что управление гостиницей невозможно без специальных знаний. Соответственно, важна квалификация...
Личность ребенка как объект и субъект в образовательной технологии: В настоящее время в России идет становление новой системы образования, ориентированного на вхождение...



©2015-2020 megaobuchalka.ru Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. (435)

Почему 1285321 студент выбрали МегаОбучалку...

Система поиска информации

Мобильная версия сайта

Удобная навигация

Нет шокирующей рекламы



(0.01 сек.)
Поможем в написании
> Курсовые, контрольные, дипломные и другие работы со скидкой до 25%
3 569 лучших специалисов, готовы оказать помощь 24/7