КАТЕГОРИИ: Архитектура-(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) |
Управление мультимедийными устройствами
Видео Звук Использование средств мультимедиа Программное рисование
Класс TCanvas инкапсулирует основные операции модуля GDI. Canvas – это поверхность рисования (холст, канва). Форма и все визуальные управляющие компоненты Delphi обладают свойством Canvas. Конструктор Create создаёт экземпляр класса TCanvas со свойствами: Brush, Pen, Font, CopyMode, ClipRect, PenPos, Pixels. Brush, Pen и Font называютcя инструментами для рисования. Свойство ClipRect (только для чтения) задаёт координаты отсекающего прямоугольника. За пределами этой прямоугольной области изображение не строится. Свойство CopyMode устанавливает режим копирования. Значение свойства cmSrcCopy определяет обычное копирование, то есть замену текущего изображения. Свойство PenPos – это текущая позиция карандаша – невидимый маркер, который задаётся горизонтальной PenPos.x и вертикальной PenPos.y координатами. Pixels[X,Y: integer]:color представляет собой массив, содержащий цвета пикселей. Для доступа к отдельному пикселю достаточно указать его координаты. При построении графических изображений часто используются классы TPoint и TRect, задающие координаты точки и прямоугольную область: TPoint=record x:Longint; y: Longint; end; TRect=record Case integer of 0:(Left,Top,Right,Bottom:integer); 1:(TopLeft, BottomRight: TPoint); end;
Для работы со звуком и видео в Delphi предусмотрены следующие методы и компоненты: Процедура Beep воспроизводит стандартный звуковой сигнал Windows. Это очень простая процедура без параметров. Функция MessageBeep предназначена для вывода звуковых сигналов Windows: function MessageBeep(uType:word):boolean; Параметр uType определяет тип звука, его можно задавать шестнадцатеричным числом или с помощью именованной константы. Функция PlaySound позволяет проигрывать звуковые файлы, форматы которых поддерживаются установленным драйвером устройства воспроизведения. function PlaySound(pszSound:PChar; hmod:HINST; fdwSound: Cardinal): Boolean; Параметр pszSound содержит указатель на звуковой файл, параметр hmod используется, если звук берётся из ресурса. Параметр pszSound – это опции (флаги), которые определяют режим воспроизведения и тип источника звука. Если заданный звуковой файл не найден, то PlaySound воспроизводит системный звук по умолчанию. При использовании функции PlaySound в разделе uses необходимо указать модуль mmSystem. Звук можно воспроизводить синхронно, асинхронно, непрерывно. При синхронном воспроизведении звука работа приложения приостанавливается до завершения звучания, однако система запоминает действия пользователя. Асинхронное (параллельное) воспроизведение не блокирует работу приложения. Если задано непрерывное повторение звукового файла, то обязательно надо предусмотреть управляющий элемент для завершения воспроизведения. Функция MessageBeep воспроизводит звук асинхронно, а при использовании PlaySound можно управлять режимом воспроизведения. В приведённом ниже примере демонстрируется использование функций воспроизведения звука. Переменная file_name содержит имя звукового файла. Параметр hmod задан равным 0, так как звук берётся не из ресурса. Значение параметра snd_async обеспечивает параллельное воспроизведение звука функцией PlaySound. case RadioGroup1.ItemIndex of 0: Beep; 1: MessageBeep(mb_iconhand); 2: if file_name<>'' then PlaySound(pChar(file_name), 0, snd_async) else ShowMessage('Файл не задан'); end; Анимация Для создания анимации на профессиональном уровне в настоящее время имеются специальные пакеты. Однако средствами Delphi вполне можно «оживить» простые изображения. Для этой цели используется программное рисование и таймер, который задаёт темп смены кадров.
Для воспроизведения видеоклипов можно использовать компоненты Animate и MediaPlayer. Компонент Animate позволяет воспроизводить стандартные мультипликации Windows (например летящие листочки при копировании файлов) и небольшие (до 64 Кбайт) avi-файлы без звукового сопровождения и без сжатия. Воспроизводимое изображение задаётся свойством FileName или CommonAvi. Свойство CommonAvi используется для задания предопределённых в Windows видео клипов. Свойство Repetitions задаёт число повторений клипа. Если значение Repetitions равно 0, то клип будет повторяться до тех пор, пока не сработает метод Stop. Начальный кадр указывается в свойстве StartFrame, а конечный – в StopFrame. По умолчанию свойство StartFrame указывает на первый кадр (равно 1), а StopFrame – на последний (равно значению свойства FrameCount). Компонент Animate позволяет воспроизводить фрагмент клипа, задав начальный и конечный кадры. Чтобы определиться с кадрами, их надо просмотреть и выбрать нужные на этапе проектирования. Для этого следует открыть контекстное меню компонента Animate и воспользоваться командами Next Frame и Previous Frame. Обычно размеры компонента Animate подстраиваются под размеры кадров видеоклипа. Этому соответствует значение свойства AutoSize, равное true. Свойство Active используется для запуска клипа (true) и его принудительной остановки (false). Для воспроизведения клипа использование компонента Animate не является обязательным. Можно воспользоваться методом Play: procedure Play (FromFrame, ToFrame:word; Count:integer); Метод Play воспроизводит кадры от FromFrame до ToFrame включительно Count раз. Если Count равно 0, то клип повторяется до вызова метода Stop.
Универсальный проигрыватель MediaPlayer предназначен для воспроизведения аудио и видео файлов, а также для управления устройствами, которые имеют MCI-совместимый драйвер (Media Control Interface). MCI-интерфейс поддерживают многие модели таких мультимедийных устройств, как звуковые карты, видеокарты, видеомагнитофоны, лазерные проигрыватели. В компоненте MediaPlayer используются имеющиеся в Windows средства для работы с такими устройствами. Визуально MediaPlayer представляет собой набор кнопок, из которых формируется панель для управления различными аппаратными и программными средствами мультимедиа. Управлять воспроизведением можно с помощью кнопок или программно, путём вызова соответствующих методов компонента. Назначение кнопок интуитивно понятно, так как обозначения на кнопках идентичны используемым в бытовых проигрывающих устройствах. Всего кнопок 9 (Play, Pause, Stop, Next, Prev, Step, Back, Record, Eject), однако в каждом конкретном случае можно оставить только те кнопки, которые требуются для работы. Видимостью и доступностью кнопок управляют свойства VisibleButtons и EnableButtons. При выполнении программы пользователь нажимает кнопки с помощью мыши или клавиатуры (клавишей «пробел»). С нажатием кнопок связано несколько событий, чаще других используются события OnClick и OnNotify. Событие OnClick возникает при щелчке по одной из кнопок. Событие OnNotify возникает после завершения работы метода. Свойства Notify, Wait и событие OnNotify используются для определения правил передачи управления приложению. В каждый момент времени MediaPlayer может управлять только одним устройством, тип которого определяется свойством DeviceType. По умолчанию свойство DeviceType имеет значение dtAutoSelect. В этом случае медиаплеер пытается определить тип устройства по расширению имени файла, заданного в свойстве FileName. Перед использованием устройства его надо открыть. Для этого используется свойство Open. Если же требуется автоматическое открытие устройства при создании формы, то следует в свойстве AutoOpen установить true. По умолчанию видео фрагменты выводятся в окно, формируемое устройством воспроизведения. При необходимости можно организовать вывод информации в какой-либо другой оконный элемент, задав его в свойстве Display. Компонент MediaPlayer является многофункциональным устройством, позволяющим управлять режимом воспроизведения/записи, идентифицировать открытое устройство и определять его возможности. За эти действия отвечает большое количество свойств и методов, рассмотрение которых выходит за рамки пособия. Ниже приводится фрагмент кода, иллюстрирующий различные способы воспроизведения звука и видео. В приложении для задания метода воспроизведения звука используется переключатель RadioGroup1, а для выбора одного из предопределённых видеоклипов Windows – переключатель RadioGroup2. Для выбора воспроизводимого файла применяется стандартное окно диалога OpenDialog1, доступ к которому осуществляется через меню. Просмотр выбранного файла можно выполнить компонентой MediaPlayer1 или Animate1 (с учётом ограничениий). В приложении использован компонент PageControl с тремя страницами (рис.2). Пример const aviType:array[0..7] of TCommonAvi= (aviCopyFile, aviCopyFiles, aviDeleteFile, aviEmptyRecycle, aviFindComputer, aviFindFile, aviFindFolder, aviRecycleFile); //массив констант, задающих стандартные клипы Windows var Form1: TForm1; implementation *.dfm} {$Rvar file_name:string;//строковая переменная для хранения имени файла procedure TForm1.Button1Click(Sender: TObject); begin //Воспроизведение звука case RadioGroup1.ItemIndex of 0: Beep; 1: MessageBeep(mb_iconhand); 2: if file_name<>'' then PlaySound(pChar(file_name), 0, snd_async) else ShowMessage('Файл не задан'); end end; procedure TForm1.FormCreate(Sender: TObject); begin RadioGroup2.ItemIndex:=0; //Начальное положение переключателя RadioGroup2Click(Sender); //Вызов процедуры обработки положения переключателя end; procedure TForm1.N1Click(Sender: TObject); begin //Обработка пункта меню «Выбрать файл» if OpenDialog1.Execute then begin file_name:= OpenDialog1.FileName; //запоминание имени файла MediaPlayer1.FileName:= file_name; //Подготовка медиаплеера к работе MediaPlayer1.DeviceType:=dtAutoSelect; MediaPlayer1.open; end; end; procedure TForm1.Button2Click(Sender: TObject); begin //воспроизведение файла компонентом Animate try if file_name<>'' then begin Animate1.FileName:= file_name; //Задание имени Animate1.Active:=true; //Запуск воспроизведения end else ShowMessage('Файл не задан'); except ShowMessage('Воспроизведение невозможно'); end; end; procedure TForm1.RadioGroup2Click(Sender: TObject); begin //Процедура обработки положения переключателя Animate1.CommonAVI:=aviType[RadioGroup2.ItemIndex]; //Задание видео клипа Label1.Caption:=RadioGroup2.Items[RadioGroup2.ItemIndex]; //Вывод выполняемых действий в метку end; procedure TForm1.Button3Click(Sender: TObject); begin //Запуск воспроизведения стандартного клипа Animate1.Active:=true; end; procedure TForm1.Button4Click(Sender: TObject); begin //Остановка воспроизведения компонентой Animate Animate1.Active:=false; end;
ВОПРОСЫ ДЛЯ САМОКОНТРОЛЯ
1. Как осуществляется вывод графики в Windows? Что такое драйвер? 2. Как выполняется восстановление изображений в Windows? 3. Перечислите классы, предназначенные для работы с графикой, и поясните, для чего предназначен каждый из них. 4. Какие из классов для работы с графикой являются абстрактными? 5. Почему в некоторых случаях нельзя применить компонент PaintBox? 6. Как определить, можно ли рисовать по поверхности компонента? 7. Какие функции используются для воспроизведения звука? 8. При каком режиме воспроизведения звука работа приложения не приостанавливается? Как задать этот режим? 9. Каким образом можно воспроизвести видео клип? Назовите разные способы. 10. Как программно задать нужные кнопки компонента MediaPlayer? Приведите фрагмент кода. 11. Что определяет свойство Display компонента MediaPlayer?
Дата добавления: 2014-01-07; Просмотров: 492; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |