Автор работы: Пользователь скрыл имя, 18 Января 2012 в 21:16, курсовая работа
В данном проекте была сделана программа для создания AVI презентаций , для разработки которой мне потребовалось умение работать с программой Delphi 7, знание языка Delphi а конкретнее работа с компонентом AviWriter в среде Delphi.
Так как этот компонент не входит в стандартную поставку компонентов Delphi для работы с ним его необходимо установить и добавить в палитру компонентов.
Палитра компонентов – это файл с расширением dpk (Delphi Package File).
Для установки компонента AviWriter необходимо в Delphi из меню Component выбрать команду Install Component и заполнить поля открывшегося окна Install Component.
Рис 8. Окно Install Component
В поле Unit file name нужно ввести имя модуля. Для этого удобно воспользоваться кнопкой Browse.
Поле Search path (путь поиска) должно содержать разделенные точкой с запятой имена каталогов, в которых Delphi во время установки компонента будет искать необходимые файлы, в частности файл ресурсов компонента. Если имя файла модуля было введено в поле Unit file name выбором файла из списка, полученного при помощи кнопки Browse, то Delphi автоматически добавляет в поле Search path имена необходимых каталогов.
Примечание
Файл ресурса компонента должен находиться в одном из каталогов, перечисленных в поле Search path. Если его там нет, то компоненту будет назначен значок его родительского класса.
Поле Package file name должно содержать имя пакета, в который будет установлен компонент. По умолчанию компоненты, создаваемые программистом, добавляются в пакет Dclusr70.dpk.
Пакет Package description содержит название пакета. Для пакета Dclusr70.dpk это текст: Borland User's Components.
После заполнения перечисленных полей и нажатия кнопки ОК начинается процесс установки. Сначала на экране появляется окно Confirm в котором Delphi просит подтвердить обновление пакета.
Рис 9. Окно Confirm
После нажатия кнопки Yes процесс установки продолжается. Если он завершается успешно, то на экране появляется информационное сообщение о том что в результате обновления пакета палитра компонентов обновлена, т.е. в нее добавлен значок компонента, и новый компонент зарегистрирован.
Рис 10. Окно оповещения о успешной установке пакета компонентов
После установки компонента в пакет открывается диалоговое окно Package (Редактор пакета компонентов) в котором перечислены компоненты, находящиеся в пакете.
Рис 11. Окно редактора пакета компонентов
На этом процесс установки компонента заканчивается. В результате на вкладке палитры компонентов, имя которой было задано при создании имени модуля компонента, появляется значок установленного компонента.
2.3 Построение видео файла
Для работы с компонентом нам понадобится одна переменная целого типа. Одна типа TPicture и одна переменная растрового изображения. Объявим их в разделе объявления переменных для процедуры построения видео файла:
var
i: integer;
Pic: TPicture;
bm: TBitmap;
После того как все необходимые нам переменные объявлены необходимо указать характеристики будущего видео файла, такие как Высота, Ширина, Частота смены кадра и звуковой поток. Высоту, Ширину и Частоту смены кадров будем считывать из компонентов TSpinEdit размещенных на форме:
with form1.AviWriter_21 do
begin
Width :=form1.SpinEdit1.Value;
Height :=form1.SpinEdit2.Value;
FrameTi
if Label6.Caption = 'None' then
WavFile
else
WavFile
Как видно из листинга, перед тем как добавить звуковой поток происходит проверка, добавил ли пользователь звуковую дорожку в программу или оставил поле для записи пути к звуковому файлу пустым.
Далее устанавливаем свойства Stretch – растяжение, которое отвечает за приведение изображения под Высоту и Ширину видео файла, и OnTheFlyCompression – быстрое сжатие, отвечающее за сжатие видео файла, присваиваем этим свойствам значение true:
Stretch :=true;
OnTheFlyCompression:=true;
После того как все свойства указаны, необходимо провести инициализацию видео. Инициализация необходима для построения графа видео потока. Инициализация вызывается при помощи метода InitVideo:
form1.
После инициализации видео в граф видео потока поочередно добавляются «фреймы» - изображения, отдельные кадры видео файла. Для этого создадим цикл который и будет поочередно брать изображения из подготовленного заранее компонента размещенного на форме, в котором записаны адреса изображений, и добавлять их в граф видео потока. После того как все изображения будут добавлены необходимо освободить переменные чтобы они не занимали много места в оперативной памяти.
for i := 0 to form1.ListBox1.Items.Count - 1 do
begin
Pic := TPicture.Create;
try
Pic.
bm := TBitmap.Create;
try
bm.
bm.
bm.
bm.
form1.
finally
bm.
end;
finally
Pic.
end;
Когда все изображения добавлены в граф видео потока, он подготавливается для создания файла и создается файл формата AVI. Это осуществляется двумя методами FinalizeVideo – подготовка к записи в файл, и WriteAvi – создание файла формата AVI и запись в него графа видео потока.
form1.
form1.
2.4 Редактирование изображения
В программе создания AVI презентаций имеются примитивные инструменты для рисования, такие как линия, прямоугольник, круг и вывод текста. Чтобы активировать один из них необходимо щелкнуть на соответствующем инструменту кнопке. В процедуре обработки щелчка по кнопке логическая переменная отвечающая за активность соответствующего инструмента примет значение true а логические переменные других инструментов примут значение false. Например, чтобы активировать инструмент «линия» процедура нажатия кнопки выглядит так:
procedure TForm2.SpeedButton1Click(
begin
istext:=
ismove:=
ispen:=true;
isellipse:=
isrectangle:
screen.
form2.
end;
Где ispen – переменная типа Boolean отвечающая за активность инструмента «линия», а istext, isellipse, isrectangle – это логические переменные отвечающие за активность инструментов «текст», «круг» и «прямоугольник» соответственно.
Сама возможность рисовать описана в трех процедурах обработчиках событий OnMouseDown, OnMouseMove и OnMouseUp компонента Image, в котором отображается редактируемое изображение.
В
обработчике события
form2.Image1.Picture.Bitmap.
form2.Image1.Picture.
В обработчике события OnMouseMove проверяется значение переменной isdraggin и если ее значение истинно, то программа проверяет какой из инструментов в данный момент времени находиться в состоянии активности ispen, istext, isellipse, isrectangle или ismove и программа выполняет те операторы, которые находятся в блоке активного инструмента. Процедура обработчика события OnMouseMove выглядит следующим образом:
procedure TForm2.Image1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
var
OldBkMode: integer;
begin
if isdraggin = true then
begin
if ispen = true then
form2.Image1.Picture.Bitmap.
if isellipse = true then
begin
form2.Image1.Picture.Bitmap.
form2.Image1.Picture.Bitmap.
end;
if isrectangle = true then
begin
form2.Image1.Picture.Bitmap.
form2.Image1.Picture.Bitmap.
end;
if ismove = true then
begin
form2.ScrollBox1.
form2.ScrollBox1.
end;
if istext=true then
begin
form2.Image1.Picture.Bitmap.
form2.Image1.Picture.Bitmap.
OldBkMode := SetBkMode(form2.Image1.
form2.Image1.Picture.Bitmap.
SetBkMode(form2.Image1.
end;
end;
end;
В обработчике события OnMouseUp переменной isdraggin присваивается значение false, т.е. левая кнопка мыши не нажата.
procedure TForm2.Image1MouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
isdraggin:=false;
end;
Рассмотрим поближе каждый из инструментов для рисования «линия», «окружность», «прямоугольник» и «текст». У каждого из этих инструментов есть логическая переменная, отвечающая за его активность ispen, isellipse, isrectangle и istext.
Информация о работе Написание программы для создания видео презентаций