Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабораторная работа5.doc
Скачиваний:
9
Добавлен:
06.11.2018
Размер:
329.73 Кб
Скачать

  1. Мультимедиа и графические возможности Delphi

Цель работы: изучить способы представления мультимедиа и графических изображений, научиться рисовать на форме и использовать методы перемещения, научиться использовать ресурсы приложения (вид иконки, курсора, картинки).

    1. Работаем с таймером

Таймер - это компонент, имеющий только одно одноименное событие. Это событие таймер генерирует через определенные промежутки времени. С технической же точки зрения таймер просто посылает окну сообщение WM_TIMER. Этот компонент расположен на вкладке System Палитры компонентов:

Перенесите его на форму. Основное свойство для таймера - это Interval. Оно определяет (в миллисекундах), как часто наш компонент будет генерировать событие OnTimer. Например, если мы установим его значение в 1000, то событие OnTimer будет генерироваться раз в секунду, а если установим в 500 - то 2 раза в секунду. Если же это свойство установить в 0, то наше событие вообще генерироваться не будет.

Для примера рассмотрим, как наша программа раз в секунду может издавать звуковой сигнал. Для этого установите Interval в 1000, затем в заготовке для события таймера (для ее получения перейдите на вкладку Events Инспектора объектов и сделайте двойной щелчок в строке OnTimer) внесите следующий код:

procedure TForm1.Timer1Timer(Sender: TObject);

begin

MessageBeep(0); //Звуковой сигнал

end;

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

А вот как можно заставить таймер выполнить некоторое действие однократно:

procedure TForm1.Timer1Timer(Sender: TObject);

begin

Timer1.Interval:=0; //Отключаем таймер

... //Некоторое действие

end;

Разумеется, в этом случае необходимо установить для свойства Interval таймера некоторое первоначальное значение.

Timer часто используют для создания эффекта мультипликации, в мультимедиа проектах или для фиксации времени работы в игре.

    1. Мультимедиа

Мультимедиа - это термин относящийся к почти всем формам анимации, звукам, видео, которые используются на компьютере:

  • Показ видео в формате Microsoft's Video for Windows (AVI).

  • Воспроизведение звуков и музыки из MIDI и WAVE файлов

Delphi позволяет легко и просто включать в программу такие мультимедийные объекты, используя встроенный компонент MediaPlayer. Подробно рассматриваются управление этим компонентом в программе и получение информации о текущем состоянии. Для проигрывания файлов мультимедиа может потребоваться наличие некоторого оборудования и программного обеспечения. Так для воспроизведения звуков нужна звуковая карта. Для воспроизведения AVI в Windows 3.1 (или WAV) требуется установить ПО Microsoft Video.

Для начала давайте создадим новый проект, затем поместим компонент MediaPlayer (вкладка System Палитры компонент) на форму:

Компонент MediaPlayer оформлен, как панель управления устройством с кнопками. Как и на магнитофоне, здесь есть кнопки “воспроизведение”, “перемотка”, “запись” и др.

Свойство FileName, позволяет выбрать файл с расширением AVI, WAV или MID. Далее нужно установить свойство AutoOpen в True. После выполнения этих шагов программа готова к запуску. Запустив программу, нажмите зеленую кнопку “воспроизведение” (крайняя слева) и Вы увидите видеоролик (если выбрали AVI) или услышите звук (если выбрали WAV или MID). Если этого не произошло или появилось сообщение об ошибке, то возможны два варианта:

  1. Вы ввели неправильное имя файла.

  2. Вы не настроили правильным образом мультимедиа в Windows. Это означает, что либо у Вас нет соответствующего ”железа”, либо не установлены нужные драйверы.

Еще одно важное свойство компонента MediaPlayer - Display. Изначально оно не заполнено и видео воспроизводится в отдельном окошке. Однако, в качестве экрана для показа ролика можно использовать, например, панель Panel. На форму нужно поместить компонент, убрать текст из свойства Caption. Далее, для MediaPlayer, в свойстве Display выбрать из списка Panel1. После этого надо запустить программу и нажать кнопку “воспроизведение”

Иногда приходится предоставлять пользователям простой путь для проигрывания максимально широкого круга файлов. Это означает, что Вам нужно будет дать пользователю доступ к жесткому диску или CD-ROM, и затем позволить ему выбрать и воспроизвести подходящий файл. В этом случае, на форме обычно располагается MediaPlayer, предоставляющий возможность управления воспроизведением.

Создайте новый проект. Поместите MediaPlayer на форму; поместите компоненты FileListBox, DirectoryListBox, DriveComboBox, FilterComboBox (на панели инструментов WIN 3.1) для выбора файла. В свойстве FileList для DirectoryListBox1 и FilterComboBox1 поставьте FileListBox1. В свойстве DirList для DriveComboBox1 поставьте DirectoryListBox1. В свойстве Filter для FilterComboBox1 укажите требуемые расширения файлов:

AVI File(*.avi)|*.avi

WAVE File(*.wav)|*.wav

MIDI file(*.MID)|*.mid

Пусть по двойному щелчку мышкой в FileListBox1 выбранный файл будет воспроизводиться. В обработчике события OnDblClick для FileListBox1 укажите

Procedure TForm1.FileListBox1DblClick(Sender:TObject);

begin

with MediaPlayer1 do

begin

Close;

FileName:=FileListBox1.FileName;

Open;

Play;

end;

end;

Сохраните проект, запустите его, выберите нужный файл и дважды щелкните на него мышкой. MediaPlayer должен воспроизвести этот файл в отдельном окне.

Как уже говорилось выше, видеоролик можно воспроизводить внутри формы, например, на панели. Давайте слегка модифицируем проект и добавим туда панель Panel1. В свойстве Display для MediaPlayer1 укажите Panel1. Нужно убрать надпись с панели (Caption) и свойство

BevelOuter := bvNone;

Чтобы переключаться при воспроизведении с окна на панель - поместите TСheckBox на форму и в обработчике события OnClick для него запишите:

procedure TForm1.CheckBox1Click(Sender: TObject);

var

Start_From : Longint;

begin

with MediaPlayer1 do begin

if FileName='' then Exit;

Start_From:=Position;

Close;

Panel1.Refresh;

if CheckBox1.Checked then

Display:=Panel1

else

Display:=NIL;

Open;

Position:=Start_From;

Play;

end;

end;

Запустите проект и воспроизведите видеоролик. Пощелкайте мышкой на CheckBox.

Во время выполнения программы может потребоваться отобразить текущее состояние объекта MediaPlayer и самого ролика (время, прошедшее с начала воспроизведения, длину ролика). Для этого у объекта MediaPlayer есть соответствующие свойства и события: Length, Position, OnNotify и др. Давайте добавим в проект прогресс-индикатор (Gauge на панели инструментов Samples), который отобразит в процентах, сколько прошло времени (см. рис.6). Для обновления показаний индикатора можно воспользоваться таймером. Поместите на форму объект Timer, установите для него Interval = 100 (100 миллисекунд). В обработчике события OnTimer нужно записать:

procedure TForm1.Timer1Timer(Sender: TObject);

begin

with MediaPlayer1 do

if FileName<>'' then

Gauge1.Progress:=Round(100*Position/Length);

end;

Запустите проект, выберите файл (AVI) и щелкните на нем два раза мышкой. При воспроизведении ролика прогресс-индикатор должен отображать процент, соответствующий прошедшему времени.

Иногда программист может захотеть скрыть от пользователя существование компонента MediaPlayer. То есть, воспроизвести звук или видео без того, чтобы пользователь заботился об их источнике. В частности, звук может быть частью презентации. Например, показ какого-нибудь графика на экране может сопровождаться объяснением, записанным в WAV файл. В течении презентации пользователь даже не знает о существовании MediaPlayer. Он работает в фоновом режиме. Для этого компонент делается невидимым (Visible = False) и управляется программно.

Другой компонент VCL Animate представляет собой проигрыватель видеоклипов формата AVI. Этот компонент воспроизводит видеочасть и игнорирует звуковое сопровождение. Изображение воспроизводится в отдельном потоке команд, что освобождает ресурсы программы для выполнения необходимой работы на фоне демонстрации клипа.

Для примера, создайте новый проект и поместите на форму компоненты Animate, ProgressBar, Timer, BitBtn. Установите свойство Enabled компонента Timer1 значение False, а свойству Interval – значение 10. Свойство Visible компоненты ProgressBar1 установите в False. Скопируйте файл Cool.avi в папку проекта.

Создайте обработчик события OnClick для кнопки BitBtn:

Procedure Tform1.BitBtnClick(Sender: TObject);

Begin

Animate1.Filename:=’cool.avi’ ;

Animate1.Active:= True;

ProgressBar1.Show;

Timer1.Enabled:= True;

End;

Создайте обработчик события OnTimer компоненты Timer1:

Procedure Tform1.Timer1Timer(Sender: TObject);

Begin

ProgressBar1.Position := ProgressBar1.Position+1;

If ProgressBar1.Position >= ProgressBar1.Max then

begin

Timer1.Enabled:= False;

ProgressBar1.Position := 0;

ProgressBar1.Hide;

Animate1.Stop

End;

End;

Такие компоненты можно использовать для создания заставок.