Программа создания мультимедийного полиэкрана

Сущность и возможности языка программирования Visual Basic. Элементы управления и функции Windows API, используемые в проекте. Структуры и составные части приложения "Video2Bmp". Организация режимов работы программы: "Склейка кадров", "Создание видео".

Рубрика Программирование, компьютеры и кибернетика
Вид курсовая работа
Язык русский
Дата добавления 29.08.2013
Размер файла 1,0 M

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Размещено на http://www.allbest.ru/

25

Курсовая работа

по дисциплине «Математическое и программное обеспечение компьютеров»

На тему «Программа создания мультимедийного полиэкрана»

Оглавление

Введение

Язык программирования Microsoft Visual Basic

Классический Visual Basic (версии 5-6)

Элементы управления, используемые в проекте

Функции Windows API, используемые в проекте

Структуры, используемые в приложении «Video2Bmp»

Составные части приложения «Video2Bmp»

Подробный разбор работы с приложением «Video2Bmp»

Заключение

Используемые источники

Введение

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

Очень неудобно будет воспроизводить их через разные видеопроигрыватели или с помощью нескольких компьютеров. Наглядность пропадёт, и велика вероятность не уследить за происходящим на двух экранах.

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

Исходя из выше сказанного, скажем о цели моей курсовой: Разработать приложение позволяющее создать из двух наборов отдельных кадров видео объединяющее эти два набора в один в виде полиэкрана (т.е. экрана в котором сверху идет один видеопоток, а снизу другой).

Для достижения данной цели нужно решить следующие задачи:

1. Изучить язык программирования Visual Basic.

2. Подобрать нужные элементы управления и изучить их методы

3. Изучить функции Windows API необходимые для создания приложения

4. Разработать пользовательский интерфейс

5. Используя выбранные элементы управления, организовать режимы работы программы: Склеивание и Создание видео.

6. Выяснить какого размера будут результирующие файлы и рассмотреть методы сжатия в случае, если файлы будут большого размера.

Язык программирования Microsoft Visual Basic

Microsoft Visual Basic [1] - средство разработки программного обеспечения, разрабатываемое корпорацией Microsoft и включающее язык программирования и среду разработки. Язык Visual Basic унаследовал дух, стиль и отчасти синтаксис своего предка - языка Бейсик, у которого есть немало диалектов.

В то же время Visual Basic сочетает в себе процедуры и элементы объектно-ориентированных и компонентно-ориентированных языков программирования. Среда разработки VB включает инструменты для визуального конструирования пользовательского интерфейса.

Visual Basic считается хорошим средством быстрой разработки прототипов программы, для разработки приложений баз данных и вообще для компонентного способа создания программ, работающих под управлением операционных систем семейства Microsoft Windows.

Первое признание серьёзными разработчиками Visual Basic получил после выхода версии 3 - VB3. Окончательное признание как полноценного средства программирования для Windows - при выходе версии 5 - VB5. Версия VB6, входящая в состав Microsoft Visual Studio 6.0, стала по-настоящему зрелым и функционально богатым продуктом. После этого разработчики из Microsoft существенно изменили направление развития данной технологии.

Классический Visual Basic (версии 5-6)

Этот язык очень сильно привязан к своей среде разработки и к операционной системе Windows, являясь исключительно инструментом написания Windows-приложений. Привязка к среде заключается в том, что существует большое количество средств, предназначенных для помощи и удобства программирования: встроенный отладчик, просмотр переменных и структур данных на лету, окно отладки, всплывающая подсказка при наборе текста программы (IntelliSense). Все эти преимущества делают бесполезным и даже невозможным использование Visual Basic вне среды разработки, например в обычном текстовом редакторе.

Именно Visual Basic 6-ой версии [2], я и буду использовать для создания нужного приложения. Назовем это приложение: «Video2Bmp».

Элементы управления, используемые в проекте

CommandButton (Кнопка) - этот элемент управления используется для того, чтобы начать, прервать или закончить какой либо процесс. Кнопка встречается во всех приложениях Windows. Главным событием для кнопки является Click. Кроме этого события, у кнопки могут быть и другие, но они применяются редко.

Label (Надпись) - предназначена для отображения текста, который пользователь не может изменить с клавиатуры. Хотя некоторые события этого элемента управления можно обрабатывать, обычно эта возможность не используется. Самым важным свойством надписи является Caption, содержащее отображаемый текст.

TextBox (Текстовое поле) - является основным элементом управления, предназначенным для ввода данных. Самым важным является свойство Text. Это свойство содержит отображаемый в поле текст. Элементы управления, которые разрешают ввод символов, имеют свойство Text, а элементы, предназначенные только для отображения текста, - свойство Caption. Текстовое поле подобно маленькому редактору.

ListBox (Список) - позволяет пользователю выбирать из списка один или несколько элементов. В любое время в список можно добавлять новые элементы или удалять существующие. Если не все элементы могут одновременно отобразиться в поле списка, то в нем автоматически отображаются полосы прокрутки. Основное событие списка - Click. Это событие вызывается, если пользователь с помощью мыши или клавиш управления курсором выбирает элемент в списке. Окно списка - это элемент управления, для которых важную роль играют методы. Методы списка необходимы для обработки элементов списка - добавления или удаления. Для добавления новых элементов используется метод Addltem. Для удаления элемента из списка используется метод RemoveItem, которому в качестве параметра передается индекс удаляемого элемента. Индексация элементов списка начинается с -1. Для удаления всех элементов списка используется метод Clear:

Timer (Таймер) - использование таймера является хорошим способом управления программой. С помощью таймера можно запускать или завершать процессы приложения в определенные моменты времени. Таймер может быть полезным и в том случае, если приложение выполняется в фоновом режиме. Во время проектирования таймер отображается в форме, но во время выполнения программы он является невидимым. Таймер имеет единственное событие - Timer, которое вызывается по истечении установленного временного интервала. Для установки интервала времени служит свойство Interval, значение которого устанавливается в миллисекундах. Например, задание значения 250 вызывает событие Timer через каждые 250 миллисекунд независимо от того, какое приложение активно. Для отключения таймера следует присвоить свойству Interval значение 0 или свойству Enabled значение False.

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

Directory ListBox (Список каталогов) - или кратко DirListBox - это второй элемент управления, предназначенный для выбора файлов. Он отображает структуру выбранного диска и позволяет осуществлять выбор и смену каталога.

Frame (Рамка) - это один из элементов контейнеров. Его назначение - объединить в группу несколько элементов управления. Объекты, объединенные с помощью рамки, можно как единое целое перемещать, активизировать и деактивизировать, делать видимыми или невидимыми. Некоторые элементы сами нуждаются в контейнере - например, все переключатели в форме всегда объединяются в одну группу. Чтобы создать вторую группу опций, нужно требуемые переключатели объединить в элементе контейнере. Для объединения объектов в группу нужно сначала создать элемент контейнер, затем добавить в него нужные элементы управления

PictureBox (Окно с рисунком) - как следует из самого названия, элемент предназначен для отображения рисунков и других графических объектов. Этот элемент управления также является элементом контейнером, поэтому его можно использовать для объединения других элементов. Как и события рамки, события элемента PictureBox обычно не обрабатываются, хотя при необходимости это можно сделать. Свойство AutoSize определяет, будут ли автоматически изменяться размеры элемента управления для отображения рисунков различного размера. Самое важное свойство PictureBox - Picture, которое содержит отображаемый графический объект. Это может быть растровое изображение (*.ВМР), пиктограмма (*.IСО), метафайл (*.WMF) или расширенный метафайл (*.EMF), также GIF и JPEG файлы.

Image (Изображение) - создан для отображения рисунков. Но в отличие от PictureBox, он не является элементом контейнером. Он не позволяет рисовать и не допускает группирования объектов. Однако Image использует меньше ресурсов и перерисовывает быстрее, чем PictureBox. Поэтому для отображения рисунков Image может быть лучшим вариантом. Так как главное назначение Image - отображение рисунков, его события обычно не анализируются. Главным свойством Image также является Picture. С его помощью можно определить рисунок, отображаемый элементом управления, на стадии проектирования либо при выполнении программы. Свойство Stretch определяет, как отображается рисунок. Если значение свойства Stretch равно True, то размеры рисунка изменяются до размеров элемента управления Image, в противном случае элемент управления изменяется до размера рисунка.

Common Dialog (Стандартное диалоговое окно) - включает набор диалоговых окон, реализующих стандартные и часто используемые функции Windows (открыть, сохранить как и др.). Для вызова окна диалога Save необходимо применить метод ShowSave.

Функции Windows API, используемые в проекте

Интерфейс программирования приложений (иногда интерфейс прикладного программирования) (англ. application programming interface, API) - набор готовых классов, процедур, функций, структур и констант, предоставляемых приложением (библиотекой, сервисом) для использования во внешних программных продуктах. Используется программистами для написания всевозможных приложений.

API - функции [3], которые возвращают определенные значения. И все приложения Windows их постоянно используют для выполнения типовых задач. Физически они находятся в особых исполняемых файлах с расширением.dll, которые называются библиотеками динамической связи. По большому счету мы можем использовать эти функции также, как и встроенные функции VB. Вообще-то не все API могут быть вызваны из VB, так как их параметры несовместимы с Visual Basic. Все API написаны на языке C - чуждого по синтаксису и структуре языку VB.

Использование API начинается с их объявления. Неправильные объявления являются причиной большинства ошибок. Объявлять их предпочтительнее в стандартном модуле с ключевым словом Public, хотя, если проект простой, можно объявить их и в форме.

Синтаксис объявления функций API:

Public/Private Declare Function Имя_функции Lib Библиотека Alias Псевдоним (Список_аргументов) As Тип

Public/Private - понятно, что ключевые слова. В коде формы функция объявляется с ключевым словом Private, в стандартном модуле - с Public, или вовсе без ключевого слова (но при этом использование функции будет возможно только в модуле).

Declare Function - команда, которая собственно объявляет функцию

Имя_функции - определяет то имя функции, с которым мы будем в дальнейшем работать в коде программы

Библиотека - определяет имя DLL-библиотеки (по сути имя файла), содержащей функцию

Псевдоним - как бы второе имя функции, псевдоним, который можно использовать в VB, если Имя функции по каким-то причинам (несовместимость синтаксиса, совпадение с именами команд и функций VB) не может быть использовано. Имеется не всегда.

(Список аргументов) - это переменные строго определенного типа, которые мы передаем или получаем. Их имена для нас не имеют особого значения, поскольку мы все равно в программе используем свои.

Тип - тип значения, которое возвращает наша функция, а именно Byte, Long, Boolean, Integer, Single, Double, Currency, Date, String, Object, Variant. В объявлении определять тип возвращаемого значения можно и с помощью значка определителя типа (например типу Integer соответствует значок %), тогда секция Тип не нужна. Подробнее типы данных ты можешь посмотреть на странице "Типы данных, поддерживаемые VB".

Опишем некоторые, самые основные API функции, используемые в проекте «Video2Bmp».

AVIFileInit - функция инициализирует AVIFile библиотеки(библиотеки обеспечивающие работу с Avi файлами).

AVIFileExit - функция закрывает AVIFile библиотеку и уменьшает счетчик ссылок для этой библиотеки.

Функция AVIFileOpen - открывает файл AVI и возвращает адрес файла, используемый для доступа к нему. Библиотека AVIFile ведет подсчет количества открытий файла, но не сколько раз он был освобожден.

AVIFileCreateStream - функция создает новый поток, в существующий файл и создает интерфейс для нового потока.

AVISaveOptions - функция получает параметры сохранения для файла и возвращает их в буфер.

AVISaveOptionsFree - функция освобождает ресурсы, выделенные для AVISaveOptions функции.

AVIMakeCompressedStream - функция создает сжатый поток от несжатого потока и фильтр сжатия, и возвращает адрес указателя с потоком сжатого. Эта функция поддерживает аудио и видео сжатия.

AVIStreamSetFormat - функция устанавливает формат потока в указанной позиции.

AVIStreamWrite - функция позволяет записывать данные в поток.

SetRect - устанавливает позицию и размер прямоугольника. Две координаты указывают на левые верхние и нижние правые углы прямоугольника. Функция возвращает 0 в случае ошибки или 1в успешном случае.

MmioStringToFOURCC - функция преобразует строку с завершающим нулем в четырехзначный код.

CoTaskMemFree - освобождает блок памяти задачи ранее выделенную через вызов CoTaskMemAlloc или CoTaskMemRealloc функции.

Lstrcat - Добавляет одну строку в другую.

SHBrowseForFolder - Отображает диалоговое окно, которое позволяет пользователю выбрать папку Shell.

SHGetPathFromIDList - Преобразует элемент списка (идентификатор пути) в файловой системе.

SHGetSpecialFolderLocation - Получает указатель на ITEMIDLIST структуры в специальную папку.

Структуры, используемые в приложении «Video2Bmp»

Структура BITMAPINFOHEADER - содержит информацию о размерах и цветовом формате аппаратно-независимого растрового формата (DIB).

Члены структуры:

biSize - определяет число байтов необходимое для структуры.

biWidth - определяет ширину точечного рисунка, в пикселях.

biHeight - устанавливает высоту точечного рисунка, в пикселях.

biPlanes - устанавливает число плоскостей целевого устройства. Это значение должно быть установлено в 1.

biBitCount - устанавливает число битов на пиксель.

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

biSizeImage - устанавливает размер изображения, в байтах. Он может быть установлен в нуль для BI_RGB точечных рисунков.

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

biYPelsPerMeter - устанавливает разрешающую способность по вертикали для принимающего устройства точечного рисунка, в пикселях на метр.

biClrUsed - устанавливает число индексов цвета в таблице цветов, которые фактически используются точечным рисунком. Если это значение равняется нулю, точечный рисунок использует максимальное число цветов, соответствующих значению члена структуры biBitCount для метода сжатия, заданного членом biCompression.

biClrImportant - устанавливает число индексов цвета, которые требуются чтобы показать на экране точечный рисунок. Если это значение равняется нулю, требуются все цвета.

BITMAPFILEHEADER - эта структура содержит информацию о типе, размер и расположение файла, содержащего аппаратно-независимый растр (DIB).

RGBQUAD - структура описывает цвета, состоящий из относительной интенсивности красного, зеленого и синего цветов.

BITMAP - инкапсулирует точечный рисунок GDI+, состоящий из данных пикселей графического изображения и атрибутов рисунка. Объект Bitmap используется для работы с изображениями, определяемыми данными пикселей.

BrowseInfo - Содержит параметры для SHBrowseForFolder функции и получает информацию о папке, выбранной пользователем.

Составные части приложения «Video2Bmp»

программирование склейка кадр видео

Приложение «Video2Bmp» состоит из трех форм. Первая форма позволяет пользователю выбрать один из двух режимов:

1) Склейка кадров - режим для объединения двух кадров в один

2) Запись видео - режим для создания avi файлов из набора кадров bmp.

Во второй форме реализуется режим склейки кадров. На третьей форме реализуется режим создания видео файла из набора кадров.

Опишем структуру программы в виде блок-схемы:

Размещено на http://www.allbest.ru/

25

Рассмотрим самые важные функции программы: для склейки кадров, в режиме «Склейка» программа использует три PictureBox. В первый и второй загружаются картинки из соответствующих папок. Затем они перерисовываются в третий PictureBox с соответствующими размерами и соединенными вместе и сохраняются в указанной папке в формате bmp.

{Картинки из папок загружаются в соответствующие PictureBox}

Picture1.Picture = LoadPicture(Ima1 + List1.List(i))

Picture3.Picture = LoadPicture(Ima2 + List2.List(i))

{Определяются размеры картинок}

Shirina = ScaleX(Picture1.Picture.Width, vbHimetric, vbPixels)

Visota = ScaleY(Picture1.Picture.Height, vbHimetric, vbPixels)

Shirina2 = ScaleX(Picture3.Picture.Width, vbHimetric, vbPixels)

Visota2 = ScaleY(Picture3.Picture.Height, vbHimetric, vbPixels)

{Определяются новые размеры будущей объединенной картинки}

Picture2.Height = Visota + Visota2 - a - b

If Shirina > Shirina2

Then

Picture2.Width = Shirina

Else

Picture2.Width = Shirina2

Shirina = Shirina2

End If

{Файлы из первого и второго PictureBox перерисовываются в третий с соответствующими размерами}

Picture2.PaintPicture Picture1, 0, 0, Shirina, Visota - b, 0, b,,, vbSrcCopy

Picture2.PaintPicture Picture3, 0, Visota - b, Shirina, Visota2 - a, 0, a,,, vbSrcCopy

{Сохраняем полученную картинку с новым именем в формате bmp}

SavePicture Picture2.Image, sFileName + s

Для создания видео из полученных кадров создаем новый видео поток. Поток может создаваться путем инициализации структуры AVI_STREAM_INFO и передачи ее в функцию AVIFileCreateStream. Когда эта функция выполнится, второй параметр будет содержать верный указатель на вновь созданный интерфейс потока:

{Заполняем заголовок для видео потока}

With strhdr

.fccType = mmioStringToFOURCC("vids", 0&) {тип видео потока}

.fccHandler = 0& {ссылка по умолчанию}

.dwScale = 1

.dwRate = k {кадров в секунду}

.dwSuggestedBufferSize = bmp.SizeImage {размер одного кадра в пикселах}

Call SetRect(.rcFrame, 0, 0, bmp.Width, bmp.Height) {прямоугольник для потока}

End With

{проверяем ввод пользователя}

If strhdr.dwRate < 1 Then strhdr.dwRate = 1

If strhdr.dwRate > 30 Then strhdr.dwRate = 30

{и создаем поток}

res = AVIFileCreateStream(pfile, ps, strhdr)

If (res <> AVIERR_OK) Then GoTo error

Теперь, когда переменная ps указывает на поток, мы можем использовать ее для создания сжатого потока, содержащего всю необходимую информацию для записи его в файл. Прежде всего, пользователь должен выбрать кодек для сжатия потока:

Получаем параметры сжатия от пользователя

Внимание! Эти вызовы API требуют указателя на указатель на структуру

pOpts = VarPtr(opts)

res = AVISaveOptions(Form1.hWnd, _

ICMF_CHOOSE_KEYFRAME Or ICMF_CHOOSE_DATARATE, _

1, _

ps, _

pOpts)

If res <> 1 Then 'In C TRUE = 1

Call AVISaveOptionsFree(1, pOpts)

GoTo error

End If

Затем мы передаем эту информацию вместе с самим потоком в функцию AVIMakeCompressedStream:

{создаем сжатый поток}

res = AVIMakeCompressedStream(psCompressed, ps, opts, 0&)

If res <> AVIERR_OK Then GoTo error

Когда эта функция завершается успешно, переменная psCompressed указывает на интерфейс сжатого потока, который может записывать сжатый видео поток в формате, заданном структурами AVI_STREAM_INFO и AVI_COMPRESS_OPTIONS. Все, что мы должны сделать далее - установить параметры DIB, которые должны быть переданы в поток. Это требует использования структуры BITMAPINFO, что означает переменную изменяющегося размера, которую достаточно трудно использовать в VB. К счастью, здесь нам поможет класс cDIB. В этом классе имеется функция, принимающая файл с диска. Ранее я вызывал эту функцию для считывания первого кадра потока из файла для того, чтобы получить размер буфера для структуры AVI_STREAM_INFO:

{получаем первый кадр потока из файла}

Set bmp = New cDib

Directorios = Dir(RutaOpen & "*.bmp")

MsgBox "Нужно выбрать параметр сжатия",, "Предупреждение"

Do While Directorios <> ""

If bmp.CreateFromFile(RutaOpen & Directorios) <> True Then

MsgBox "No File!", vbExclamation + vbOKOnly, "KO!"

GoTo error

End If

Directorios = Dir Loop

Сейчас мы можем использовать ту же структуру для установки формата видео-потока. Прежде всего нам необходимо записать всю необходимую информацию в структуру BITMAPINFO:

With BI

.biBitCount = bmp.BitCount

.biClrImportant = bmp.ClrImportant

.biClrUsed = bmp.ClrUsed

.biCompression = bmp.Compression

.biHeight = bmp.Height

.biWidth = bmp.Width

.biPlanes = bmp.Planes

.biSize = bmp.SizeInfoHeader

.biSizeImage = bmp.SizeImage

.biXPelsPerMeter = bmp.XPPM

.biYPelsPerMeter = bmp.YPPM

End With

И затем передаем эту структуру вместе с потоком в функцию AVIStreamSetFormat:

{устанавливаем формат сжатого потока}

res = AVIStreamSetFormat(psCompressed, 0, ByVal bmp.PointerToBitmapInfo, bmp.SizeBitmapInfo)

If (res <> AVIERR_OK) Then GoTo error

Если эта функция завершается успешно, то сжатый поток полностью инициализирован и готов принять несколько DIB для записи. Вы сделаете это путем передачи этого потока и позиции, с которой нужно начать запись, в функцию AVIStreamWrite. Обратите внимание, что здесь вновь используется класс cDIB, так как он содержит метод, который возвращает прямой указатель на биты, которые нужно передать в функцию:

{Записываем каждый кадр видео}

Static Posicion As Long

Posicion = 1

Directorios = Dir(RutaOpen & "*.bmp")

Do

Posicion = Posicion + 1

bmp.CreateFromFile (RutaOpen & Directorios)

res = AVIStreamWrite(psCompressed, Posicion, 1, bmp.PointerToBits, bmp.SizeImage, AVIIF_KEYFRAME, ByVal 0&, ByVal 0&)

Directorios = Dir

Loop While Directorios <> ""

Как только этот цикл завершит запись изображений, Вам нужно освободить все ресурсы и файловые указатели. Файл, созданный Вами в начале этой процедуры, теперь содержит обычный видео поток, и его можно воспроизвести в Windows Media Player или в другом проигрывателе.

Подробный разбор работы с приложением «Video2Bmp»

При запуске программы открывается форма с двумя кнопками «Склейка кадров» и «Создание видео». В этом окне выбирается режим работы программы.

При нажатии на кнопку «Склейка кадров» выбирается режим, позволяющий пользователю объединить два набора кадров в один. На форме располагаются два элемента Image, в которых будет отображаться процесс объединения кадров, по два элемента DriveListBox, Directory ListBox и ListBox - которые используются для выбора папок с кадрами.

Верхние DriveListBox, Directory ListBox используются для выбора папки с кадрами, которые будут отображаться в верхней части полиэкрана. Верхний ListBox используется для отображения названий всех кадров из этой папки.

Нижние DriveListBox, Directory ListBox используются для выбора папки с кадрами, которые будут отображаться в нижней части полиэкрана. Нижний ListBox используется для отображения названий всех кадров из соответствующей папки.

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

Высота же полиэкрана по умолчанию устанавливается, как сумма высот кадров из первой и второй папки. Если пользователю нужно изменить высоту кадров, то он может это сделать, нажав на кнопку «Установить высоту».

После выбора нужных папок, нажимаем на кнопку «Загрузить» и в элементах ListBox отобразятся имена всех файлов из соответствующих папок. Имена в элементах ListBox отсортируются по названию. Если щелкнуть на любой элемент списка, то соответствующая картинка отобразится в элементе Image.

Также рекомендуется, чтобы количество кадров в списках совпадало, иначе оставшиеся кадры не будут использоваться, т.е. в результате объединения количество кадров будет равно меньшему количеству из списков ListBox. Кнопки «Очистить список 1» и «Очистить список 2» используются для очистки соответствующих элементов ListBox.

Если же в списках имеются лишние кадры, то с помощью кнопок «Удалить из списка» можно удалить выделенный элемент в соответствующем списке ListBox.

При нажатии на кнопку «Склеить» открывается диалоговое окно для выбора папки, в которую будет сохраняться результат.

После выбора папки начнётся процесс объединения. Файлы из первого списка будут соединятся с соответствующими по номеру файлами из второго списка и результат будет сохраняться в выбранной папке.

При завершении процесса объединения выскочит диалоговое окно, сообщающее пользователю о завершении объединения. После чего мы можем снова вернуться в меню выбора режима, нажав на кнопку «Вернуться в главное меню».

Кнопка «Создание видео» открывается форма, реализующая режим создания avi файла из кадров. С помощью кнопки «Выбрать папку с кадрами и файл сохранения» вызываются два диалоговых окна подряд. Первое для выбора папки с кадрами из которых будет собираться avi файл. Второе для выбора имени файла в котором будет сохранен результат.

После этого жмем на кнопку «Записать видео» и запускаем процесс преобразования файлов bmp в видео файл. Перед запуском этого процесса пользователю предоставляется окно выбора режима сжатия, который позволит пользователю выбрать способ сжатия. Список будет зависеть от того, какие кодеки имеются на компьютере пользователя. Выбрав способ сжатия, пользователь запускает процесс преобразования. Результат будет сохранен в указанном файле.

После записи пользователь может вернуться в главное меню с помощью кнопки «В главное меню».

Заключение

Приложение «Video2Bmp» позволяет создать видео-файл отображающий одновременно два ряда видеокадров в одном окне, синхронизованных между собой. Имеется возможность кадрирования исходных изображений, предварительного просмотра, создаваемого видеоряда, удаления отдельных кадров, выбора исходных папок с видеорядами и папки назначения. Т. е. это приложение полностью соответствует цели поставленной в этой работе. Данное приложение можно эффективно применять для иллюстрации взаимного хода двух взаимодействующих процессов, что позволит более детально их исследовать и оценить взаимное влияние.

Используемые источники

1. Использование Visual Basic 6.0 Брайан Сайлер, Джефф Споттс Издательский Дом «Вильямс» 2009

2. Visual Basic 6.0: разработка приложений (практическое руководство) Гарнаева А. BHV-СПб 2007

3. Win32 API и Visual Basic для профессионалов Dan Appleman Санкт-Петербург 2006

4. http://ru.wikipedia.org/wiki/Visual_Basic

5. http://manuals-ot-slona.narod.ru/visualb_faq_rus/faqindex.html

6. http://hpc.name/thread/2154/p1.html

7. http://msdn.microsoft.com/en-us/library/windows/desktop/dd756817

8. http://www.answers.com/topic

Размещено на Allbest.ru


Подобные документы

  • Описание Visual Basic Scripting Edition как скриптового языка программирования, интерпретируемого компонентом Windows Script Host. Правила работы языка и применение VBS-сценариев для обработки данных, управления системой, работы с учетными записями.

    доклад [31,3 K], добавлен 11.05.2012

  • Язык программирования Visual Basic: краткая история возникновения, значение и общая характеристика. Изучение основных свойств Visual Basic, синтаксис языка. Обзор ключевых операторов Visual Basic, пользовательские процедуры и функции данного языка.

    контрольная работа [36,4 K], добавлен 23.07.2014

  • Структура и назначение программного кода программы по созданию 3D-графики средствами языка программирования Visual Basic. Элементы управления "Окно формы" и "Таймер", выполняемые ими функции и основные свойства, значение в работе программного кода.

    лабораторная работа [362,4 K], добавлен 06.07.2009

  • Разработка программного продукта с помощью языка программирования Visual Basic. Описание интерфейса пользователя и возможностей программы. Исходный код основных модулей. Программа, демонстрирующая основные возможности диаграмм и среды Visual Basic.

    контрольная работа [989,9 K], добавлен 29.03.2011

  • Исследование теоретических аспектов разработки программы посредством использования Visual Basic. Анализ достоинств и недостатков данного языка программирования. Изучение особенностей создания интерфейса приложения. Основные этапы реализации программы.

    практическая работа [460,6 K], добавлен 22.01.2013

  • Многообразие мини-игр и возможности языка Visual basic 6.0 для их реализации. Понятие мини-игр и их классификация. Элементы управления мини-игры "Реверси". Разработка прикладной программы. Создание игрового интерфейса. Написание программного кода.

    курсовая работа [1,5 M], добавлен 03.06.2014

  • Написание тестирующей программы для проверки знаний учащихся с помощью языка программирования Visual Basic for Applications (VBA), встроенного в пакет Microsoft Office. Общие сведения о программе, условия ее выполнения, настройка, проверка, выполнение.

    контрольная работа [25,2 K], добавлен 07.06.2010

  • Принципы визуального программирования. Создание программы, генерирующей звук через определенные промежутки времени. Visual Basic как средство разработки прототипов программы, для разработки приложений баз данных и компонентного способа создания программ.

    лабораторная работа [1,1 M], добавлен 10.12.2014

  • Сущность основных понятий объектно-ориентированного программирования: объект, класс, полиморфизм. Блок-схема алгоритма и текст программы для вычисления площади круга, прямоугольника и трапеции. Принцип работы и результаты тестирования приложения.

    курсовая работа [588,7 K], добавлен 17.07.2012

  • Система программирования - Visual Basic. Новые возможности. Быстрый запуск проекта. Средства управления. Что позволяет Visual Basic. Краткое описание работы. Corel Draw. Отличие векторной графики от растровой. Краткое описание работы в Corel Draw.

    курсовая работа [1,3 M], добавлен 04.10.2008

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.