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

Движение объектов по экрану


Вам уже приходилось заставлять кнопки прыгать по экрану. Попробуем добиться плавного движения объекта. Создайте проект с большой формой и добавьте в него маленький элемент управления PictureBox. Поместите его в левой части формы. Придайте ему картинку (свойство Image). Лучше всего, пока вы еще не умеете работать с изображениями, в качестве картинки взять один из файлов значков (иконок), находящихся по адресу

Program Files\Microsoft Visual Studio .NET\Common7\Graphics\icons

Напишем программу, которая двигала бы картинку плавно направо:

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

m:     PictureBox1.Left += 2                                ’Значение PictureBox1.Left увеличивается на 2 пикселя

        GoTo m

End Sub

Если движение получилось слишком медленным, то прибавьте шаг – напишите 5 вместо 2. Если слишком быстрым, то уменьшите –   1.

Чтобы сделать движение еще более медленным, вам придется сделать шаг меньшим 1. Но в данной программе это не сработает, так как значения свойства Left имеют тип Integer и поэтому все равно будут округляться или до 1, или до 0. Придется использовать переменную величину дробного типа:

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

        Dim x As Double

        x = PictureBox1.Left          'Компьютер узнает, откуда начинать движение

m:    PictureBox1.Left = x          'Изображение встает на место, указанное гориз. координатой

        x +=  0.0001                      'Компьютер увеличивает в уме горизонтальную координату

        GoTo m

End Sub

Не удивляйтесь, что вам не пришлось в цикле рисовать и стирать объект. Когда дело касается элемента управления, заботы о перерисовке берет на себя VB. А вот когда вы сами будете рисовать различные фигуры на форме и попытаетесь их двигать, тогда вам придется их и рисовать и стирать.

Задание 24.         

Напишите 4 процедуры, в которых заставьте картинку или кнопку двигаться налево, вниз, вверх, наискосок.

Что дальше? Пока мы никак не можем влиять на полученное движение. Только можем останавливать программу. Как с помощью мыши или клавиатуры влиять на движение во время движения?  Как хотя бы запрограммировать остановку в нужном месте? Об этом позже.



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