назад | содержание | вперед
Перемещение и переключение изображений
Перемещая и переключая изображения, можно организовать несложную анимацию. Чаще всего этот способ используется для анимации процессов ожидания или расчета, "оживления" изображений в формах приложения.
Для изучения перемещения и переключения изображений создадим небольшой проект MyGraphicsDay. Выполните следующие действия:
1. Создайте новый стандартный проект. Для этого в меню File (Файл) выберите команду New Project (Создать новый проект) и в окне выбора типа проекта дважды щелкните мышью на значке Standard EXE.
2. Присвойте проекту имя MyGraphicsDay. Откройте окно свойств проекта, выбрав команду Project1 Properties (Свойства Project 1) меню Project (Проект). После переименования проекта эта команда будет называться MyGraphicsDay Properties.
3. Присвойте форме проекта имя FormForGraphics. В свойство caption формы введите заголовок Форма для работы с графикой.
4. Добавьте в форму кнопку управления типа commandButton, дважды щелкнув мышью кнопку ComniandBiitton на панели элементов управления. Назовите эту кнопку cbRun и присвойте свойству Caption значение Старт. Созданная в форме кнопка cbRun будет служить для запуска действий, выполняемых приложением MyGraphicsDay по событию click этой кнопки.
5. Добавьте в форму FomForGraphics еще одну такую же кнопку и назовите ее cbStop. Присвойте свойству caption значение Стоп. Эта кнопка будет служить для останова анимации и возврата приложения в исходное состояние.
6. При анимации, даже самой простой, требуется организовать изменение объектов во времени. Для задания отсчета интервалов времени служит объект типа таймер Timer. Добавьте его в форму с помощью кнопки
Timer на панели элементов управления. Этот объект будет вырабатывать управляющие сообщения для анимации. Используя свойство Name, присвойте таймеру имя tmrGraphicsTimer. При запуске приложения таймер невидим, поэтому о свойстве visible для этого объекта можно не задумываться. Свойство таймера Enabled установите в состояние False, а свойству interval присвойте значение 200.
Замечание
Более подробную информацию об объекте Timer вы можете найти в главе 8. Здесь лишь кратко напомним следующее. Таймер отсчитывает интервалы времени в миллисекундах, отрабатывая событие Timer. При этом минимальный интервал отсчета времени составляет 1, а максимальный — 65 535 миллисекунд, то есть максимально таймер может работать с интервалом чуть больше 1 минуты. Основные свойства объекта Timer — interval и Enabled. Свойство Interval определяет интервал отработки события Timer, свойство Enabled запускает или останавливает таймер. Если Enabled установлено в состояние True, таймер начинает отрабатывать событие Timer, если в состояние False — таймер находится в состоянии ожидания. При этом таймер с установленным при проектировании свойством Enabled в состояние True запускается сразу же после загрузки формы, в которой он находится.
7. Добавьте в форму элемент управления image. Назовите его imgSunMoon.
8. Добавьте в форму массив элементов управления типа Picture, состоящий из двух элементов. Для создания массива воспользуйтесь любым удобным для вас способом. Например, разместите в форме объект picture, дважды щелкнув мышью кнопку PictureBox на панели элементов управления. Затем скопируйте объект и вставьте его копию в форму. Объектам массива присвойте имя picSunMoon. В элемент массива, индекс которого равен 0 (свойство index), введите изображение солнца. В элемент массива, индекс которого равен 1, введите изображение месяца. Свойство visible для элементов массива установите в состояние False.
Полученное приложение показано на рис. 11.8.
Рис. 11.8. Вид приложения MyGraphicsDay
9. Откройте окно редактора и разместите в нем указанный ниже код:
Dim xAdd As Integer
Dim yAdd As Integer
Dim figSunMoon As Integer
Private Sub Form Load()
' "Смена дня и ночи"
xAdd = 100
yAdd = -100
figSunMoon = 1
xScaleSunMoon = ImgSunMoon.Width
FormForGraphics.Caption = "Смена дня и ночи"
End Sub
Private Sub cbRun_Click()
tmrGraphicsTimer.Enabled = True
xAdd = 100
yAdd = -100
figSunMoon = 1
ImgSunMoon.Picture = PicSunMoon(0).Picture
End Sub
Private Sub cbStop_Click()
tmrGraphicsTimer.Enabled = False
ImgSunMoon.Left = xScaleSunMoon / 2
ImgSunMoon.Top = FormForGraphics.ScaleHeight — 500
ImgSunMoon.Picture = PicSunMoon(0).Picture
End Sub
Private Sub tmrGraphicsTimer Timer()
ImgSunMoon.Left = ImgSunMoon.Left + xAdd
ImgSunMoon.Top = ImgSunMoon.Top + yAdd
If ImgSunMoon.Left > FormForGraphics.ScaleWidth / 2 — xScaleSunMoon / 2 And figSunMoon = 1 Then
yAdd = 100
End If
If ImgSunMoon.Left < FormForGraphics.ScaleWidth / 2 -xScaleSunMoon / 2 And figSunMoon = 0 Then
yAdd = 100
End If
If ImgSunMoon.Left > FormForGraphics.ScaleWidth Then
yAdd = -100
xAdd = -100
figSunMoon = 0
ImgSunMoon.Picture = PicSunMoon(1).Picture
ImgSunMoon.Left = FormForGraphics.ScaleWidth — 500
ImgSunMoon.Top = FormForGraphics.ScaleHeight — 500
End If
If ImgSunMoon.Left < xScaleSunMoon / 2 And figSunMoon = 0 Then
ImgSunMoon.Left = xScaleSunMoon / 2
ImgSunMoon.Top = FormForGraphics.ScaleHeight — 500
tmrGraphicsTimer.Enabled = False
End If
End Sub
10. Запустите приложение на выполнение. При нажатии кнопки Старт объект, напоминающий солнце, перемещается по форме и при достижении правого нижнего угла меняет изображение, после чего возвращается в исходную точку (рис. 11.9). Нажатие кнопки Стоп переводит приложение в исходное состояние.
Рис. 11.9. Вид приложения MyGraphicsDay при запуске
назад | содержание | вперед