назад | содержание | вперед

Перемещение и переключение изображений

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

Для изучения перемещения и переключения изображений создадим небольшой проект 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 при запуске

 

назад | содержание | вперед