- •1. Специальные конструкции языка 6
- •Введение
- •Специальные конструкции языка
- •Пользовательские типы данных
- •Типизированные файлы
- •Текстовые файлы
- •Нетипизированные файлы
- •Обработка ошибок
- •Оператор On Error
- •Объект Err
- •Обработка событий мыши и клавиатуры
- •Обработка событий мыши
- •Обработка событий клавиатуры
- •1.5. Элемент управления MaskedEdit
- •Графика
- •Элементы управления для графических изображений
- •Генерация графических изображений (примитивов)
- •Графические методы
- •Координаты элементов управления.
- •Примеры использования графических методов
- •Задания для самостоятельной работы
- •Работа с таймером
- •Анимация графических изображений
- •Основные свойства и методы
- •Примеры создания эффектов анимации
- •Варианты заданий по анимации для самостоятельной работы
- •Стандартные диалоговые окна
- •Работа с базами данных в vb
- •Элемент управления Data
- •Объект Recordset
- •Элемент управления msFlexGrid
- •Элемент управления ms Data Bound Grid
- •Использование языка sql в vb для работы с базами данных
- •Литература
Анимация графических изображений
Основные свойства и методы
Анимация – это создание эффекта движения графического объекта за счет отображения на экране изображений объекта и быстрой его смены с частичным изменением формы или положения. Анимация заключается в перемещении изображения объекта относительно системы координат экранной формы. Анимация реализуется путем программного управления движением объекта.
Перемещение объекта в Visual Basic программным способом может осуществляться путем указания смещения координат относительно текущего положения. Для растровых изображений, помещенных в объекты Image или PictureBox, перемещение путем указания новых координат выполняется с помощью их свойств Top, Left или метода Move. Синтаксис метода Move следующий:
ObjectName.Move x, y
где ObjectName – имя перемещаемого объекта в форме;
х, y - координаты нового положения объекта в форме.
Например, Image1.Move 100,200.
Для рисунков, созданных с помощью графических элементов управления или графических методов, перемещение осуществляется путем перерисовки рисунков с указанием новых координат этих объектов.
Для обеспечения плавного движения объекта можно применить цикл, в котором координаты меняются незначительно на каждом шаге.
Например:
For i=1 To 500
Circle (5+Dx*I, 5+Dy*I), 5, здесь Dx, Dy - шаг движения по
осям ОХ и ОY соответственно
Next
или
For i=1 To 3000
Image1.Move i, i
Next
Если изменять координаты графических объектов на экране в последовательные моменты времени, то объекты также будут “перемещаться” по экрану. Это обеспечивается размещением на форме таймера. С помощью элемента таймер можно устанавливать скорость движения объекта в форме. В случае применения элемента таймер операторы задания новых координат необходимо поместить в тело процедуры обработки события Timer элемента Timer
Примеры создания эффектов анимации
Пример 4.1. В качестве примера рассмотрим работу программы для осуществления анимации тремя различными способами, реализованными по нажатию командных кнопок «Окружность», «Квадрат» и «Часы». Общий вид интерфейса предельно прост, на форме располагаем элементы Timer, Image (для размещения рисунка с изображением часов) и три командные кнопки (см. рис. 4.1).
По загрузке формы устанавливаются пользовательские координаты формы и значения переменных Dx (шаг по оси OX), Dy (шаг по оси OY).
Объект «Окружность» перемещается по форме по диагонали слева направо с использованием метода Circle и изменением в цикле по К от 1 до 18 с шагом 1 своих координат. В процедуре обработки события Command1_Click() также отключается таймер Timer1.
Объект «Квадрат» перемещается с использованием элемента Timer. В процедуре обработки события Command2_Click() активизируется таймер и устанавливается в 1 значение переменной цикла. В процедуре обработки события Timer1_Timer() методом Line рисуется квадрат через равные промежутки времени с новыми координатами, что создает эффект движения.
Объект «Часы» перемещается по форме с использованием метода Move путем изменения в цикле по J от 1 до 90 с шагом 0,1 своих координат. Движение часов осуществляется из верхнего левого в нижний правый угол. Процедура обработки события Command3_Click() также отключает таймер Timer1.
Текст программы приведен ниже.
Dim I As Integer
Dim Dx As Integer
Dim Dy As Integer
Private Sub Form_Load()
Dx = 5
Dy = 5
Scale (0, 100)-(100, 0)
End Sub
Private Sub Command1_Click() ‘по нажатию кнопки
«Окружность»
Cls
Timer1.Enabled = False
For K = 1 To 18
Circle (5 + Dx * K, 5 + Dy * K), 5
Next
End Sub
Private Sub Command2_Click() ‘по нажатию кнопки «Квадрат»
Timer1.Enabled = True
I = 1
End Sub
Private Sub Timer1_Timer()
Cls
Line (5 + Dx * I, Dy * I)-(Dx * I, 5 + Dy * I),,B
I = I + 1
End Sub
Private Sub Command3_Click() ‘по нажатию кнопки «Часы»
Timer1.Enabled = False
Cls
For J = 1 To 90 Step 0.1
Image1.Move J, 100 - J
Next
End Sub
Рис. 4.1. Результат выполнения программы
при нажатии кнопки «Окружность»
Пример 4.2. Проект реализует поочередное движение окружности справа налево в верхней части формы при нажатии на кнопку “Старт круг” и рисунка в виде машины в нижней части формы с остановкой перед знаком «Stop» при нажатии кнопки “Старт машина”. В начальный момент времени на форме присутствуют обе кнопки. При нажатии одной из кнопок совершается соответствующее действие и эта кнопка с формы исчезает. На форме всегда присутствует одна кнопка, инициирующая действие, отличное от совершенного. Внешний вид интерфейса смотрите на рис. 4.2 и 4.3. Текст программы приведен ниже.
Dim Dx As Single
Dim i As Integer
Private Sub Form_Load()
Timer2.Enabled = False
Timer1.Enabled = False
Image1.Visible = False
Picture1.Visible = False
Picture1.Scale (0, 100)-(100, 0)
Form1.Scale (0, 100)-(100, 0)
i = 1
End Sub
Private Sub StartK_Click() ‘ по нажатию кнопки «Старт круг»
Picture1.Visible = True
Picture2.Visible = False
Image1.Visible = False
Timer1.Enabled = True
Timer2.Enabled = False
StartM.Visible = True
StartK.Visible = False
Dx = 5
i = 1
End Sub
Private Sub StartM_Click() ‘ по нажатию кнопки «Старт
машина»
Picture1.Visible = False
Picture2.Visible = True
Image1.Visible = True
Timer1.Enabled = False
Timer2.Enabled = True
StartK.Visible = True
StartM.Visible = False
i = 1
Form1.Cls
Beep ‘ генерация звукового сигнала
End Sub
Private Sub Timer1_Timer()
Picture1.Cls
Picture1.Circle (100 - Dx * i, 50), 5
i = i + 1
End Sub
Private Sub Timer2_Timer()
Image1.Move (1 * i)
If i < 80 Then i = i + 1 Else Exit Sub
End Sub
Рис. 4.2. Результат выполнения программы при нажатии кнопки “Старт круг”
Рис. 4.3. Результат выполнения программы при нажатии кнопки “Старт машина”