КАТЕГОРИИ: Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748) |
Пример программы с мультимедиа
Два вида программ мультимедиа Иногда приходится предоставлять пользователям простой путь для проигрывания максимально широкого круга файлов и затем позволить ему выбрать и воспроизвести подходящий файл. В этом случае, на форме обычно располагается TMediaPlayer, предоставляющий возможность управления воспроизведением. Иногда программист может захотеть скрыть от пользователя существование компонента TMediaPlayer. То есть, воспроизвести звук или видео без того, чтобы пользователь заботился об их источнике. В частности, звук может быть частью презентации. Например, показ какого-нибудь графика на экране может сопровождаться объяснением, записанным в WAV-файл. В течении презентации пользователь даже не знает о существовании TMediaPlayer. Он работает в фоновом режиме. Для этого компонент делается невидимым (Visible:= False;) и управляется программно.
В данной главе мы рассмотрим пример построения приложения с мультимедиа первого типа. Создайте новый проект (File | New Project). Поместите TMediaPlayer на форму; поместите (страница WIN 3.1) компоненты TFileListBox, TDirectoryListBox, TDriveComboBox, TFilterComboBox для выбора файла. В свойстве 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;
Внешний вид формы представлен на рис.4.
Рис.4. Начальный вид проекта
Сохраните проект, запустите его, выберите нужный файл и дважды щелкните на него мышкой. MediaPlayer должен воспроизвести этот файл в отдельном окне. Как уже говорилось выше, видеоролик можно воспроизводить внутри формы, например, на панели. Давайте слегка модифицируем проект и добавим туда панель TPanel (см. рис.5). В свойстве 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.
Рис.5. Добавлена панель для воспроизведения видео и переключатель окно/панель
Во время выполнения программы может потребоваться отобразить текущее состояние объекта MediaPlayer и самого ролика (время, прошедшее с начала воспроизведения, длину ролика). Для этого у объекта TMediaPlayer есть соответствующие свойства и события: Length, Position, OnNotify и др. Давайте добавим в проект прогресс-индикатор (TGauge), который отобразит в процентах, сколько прошло времени (см. рис.6). Для обновления показаний индикатора можно воспользоваться таймером. Поместите на форму объект TTimer и установите для него Interval:= 100; (100 миллисекунд). В обработчике события OnTimer нужно записать:
procedure TForm1.Timer1Timer(Sender: TObject); begin with MediaPlayer1 do if FileName<>'' then Gauge1.Progress:= Round(100*Position/Length); end;
Запустите проект, выберите файл (AVI) и щелкните на нем два раза мышкой. При воспроизведении ролика прогресс-индикатор должен отображать процент, соответствующий прошедшему времени (см. рис.6).
Листинг DEMOVideo приведен ниже.
Unit DEMOVideo; interface uses SysUtils, WinTypes, WinProcs, Messages, Classes, Graphics, Controls, Forms, Dialogs, ExtCtrls, Gauges, FileCtrl, StdCtrls, MPlayer;
type TForm1 = class(TForm) MediaPlayer1: TMediaPlayer; CheckBox1: TCheckBox; FileListBox1: TFileListBox; DirectoryListBox1: TDirectoryListBox; DriveComboBox1: TDriveComboBox; FilterComboBox1: TFilterComboBox; Panel1: TPanel; Gauge1: TGauge; Timer1: TTimer; Button1: TButton; procedure FileListBox1DblClick(Sender: TObject); procedure Timer1Timer(Sender: TObject); procedure CheckBox1Click(Sender: TObject); procedure Button1Click(Sender: TObject); private { Private declarations } public { Public declarations } end;
var Form1: TForm1;
implementation {$R *.DFM}
procedure TForm1.FileListBox1DblClick(Sender: TObject); begin with MediaPlayer1 do begin Close; Panel1.Refresh; FileName:= FileListBox1.FileName; Open; Play; end; end;
procedure TForm1.Timer1Timer(Sender: TObject); begin with MediaPlayer1 do if FileName<>'' then Gauge1.Progress:= Round(100*Position/Length); end;
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;
procedure TForm1.Button1Click(Sender: TObject); begin if FileListBox1.FileName ='' then Exit; with MediaPlayer1 do begin Close; Panel1.Refresh; FileName:= FileListBox1.FileName; Open; end; end;
end.
Рис.6. Законченное приложение для воспроизведения AVI, WAV и MDI файлов
Дата добавления: 2014-01-07; Просмотров: 721; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |