Чтение онлайн

на главную - закладки

Жанры

Шрифт:
...

Листинг 5.14.

Видеопроигрыватель

unit video_player;

interface

uses

//Подключаемые модули

Windows, Messages, SysUtils, Variants, Classes, Graphics,

Controls, Forms, Dialogs, StdCtrls, MPlayer;

Type

//Главная форма приложения

TFormVideoPlayer = class(TForm)

mpVideoPlayer: TMediaPlayer;

FileOpenDlg: TOpenDialog;

gbViewVideo: TGroupBox;

bnOpenFile: TButton;

//Нажатие кнопки открытия файла

procedure bnOpenFileClick(Sender: TObject);

//Активизация формы

procedure FormActivate(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

FormVideoPlayer: TFormVideoPlayer;

implementation

{$R *.dfm}

procedure TFormVideoPlayer.bnOpenFileClick(Sender: TObject);

begin

if FileOpenDlg.Execute = True then

begin

//Загружаем

файл, выбранный в диалоге открытия файла

mpVideoPlayer.FileName := FileOpenDlg.FileName;

//Активизируем проигрыватель

mpVideoPlayer.Open;

end;

end;

procedure TFormVideoPlayer.FormActivate(Sender: TObject);

begin

//Устанавливаем область воспроизведения

mpVideoPlayer.Display := gbViewVideo;

end;

end.

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

Глава 6 Использование Windows GDI

• Графические объекты

• Аппаратно-независимыи графический вывод

• Контекст устройства

• Графические режимы

• Работа со шрифтами

• Рисование примитивов

• Работа с текстом

• Работа с растровыми изображениями

• Альфа-смешивание

Операционная система Windows с самого начала создавалась прежде всего как графическая оболочка. И как следствие, в ней осуществляется графическое представление информации. Вполне естественным является то, что почти любое приложение использует экран для отображения данных, с которыми оно работает. По крайней мере, сама операционная система отображает на экране визуальные элементы приложений. Windows обеспечивает универсальность представления информации как на экране, так и на других устройствах вывода, например, на принтере. Стоит отметить, что для этого используются одни и те же примитивы отображения. Система самостоятельно определяет целевое устройство и активизирует соответствующий ему модуль. ОС Windows является многозадачной и предъявляет к приложениям ряд основных требований, исключающих конфликты при использовании функций вывода. Однако это вовсе не означает, что Windows обеспечивает приложения только набором функций вывода на экран или печать – система полностью управляет всем выводом. Наверное, более правильно будет сказать, что приложения используют в качестве первичного вывода окно, а не непосредственно экран. Каждое устройство вывода в Windows характеризуется набором текущих параметров, с использованием которых происходит собственно вывод. Причем в каждый конкретный момент времени только одному приложению соответствует некоторое устройство вывода, что исключает одновременный доступ к последнему, изменение параметров одним приложением перед началом процесса вывода другим.

6.1. Графические объекты

Для управления выводом операционная система Windows предоставляет приложению набор графических объектов.

• Битовые массивы (bitmaps) – прямоугольные массивы точек, формирующие растровые изображения.

• Карандаши (pens) – используются для задания таких параметров рисования линий, как толщина, цвет и стиль (сплошная, прерывистая и т. п.).

• Кисти (brushs) – применяются для задания таких параметров заливки замкнутых контуров, как цвет и стиль.

• Шрифты (fonts) – позволяют задавать параметры вывода текста, включая имя шрифта, размер символов и т. д.

• Регионы (regions) – задают области окна, которые могут быть ограничены прямоугольником, многоугольником, эллипсом или их произвольной комбинацией, для выполнения операций заполнения, заливки, инверсии и т. д. Помимо этого, служат для определения местоположения указателя.

Логические палитры (logical palettes) – осуществляют интерфейс между приложением и таким цветным устройством вывода, как дисплей, содержат список цветов, необходимых приложению.

• Контуры (paths) – используются для заполнения или выделения контура различных фигур.

6.2. Аппаратно-независимый графический вывод

Одна из главных особенностей Windows API – независимость графического вывода от устройства. Программное обеспечение, которое поддерживает независимость, содержится в двух динамически компонуемых библиотеках. Первая – gdi. dll – обеспечивает общий графический интерфейс устройства (Graphics Device Interface, GDI), а вторая является драйвером конкретного используемого устройства. В результате приложение использует тот интерфейс, который предоставляется первой библиотекой. Перед тем как произвести какую-либо операцию вывода на некоторое устройство, приложению необходимо запросить GDI о загрузке соответствующего драйвера (обычно это осуществляется автоматически и не требует дополнительных действий со стороны программиста). После загрузки соответствующего драйвера приложение может настроить ряд таких параметров вывода, как цвет линии и ее ширина, тип кисти и ее цветщрифт, область отсечения и т. д. Операционная система Windows обеспечивает хранение всех этих и других данных в специальной структуре, называемой контекстом устройства.

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

6.3. Контекст устройства

Контекст устройства – структура, определяющая набор графических объектов и связанных с ними атрибутов и графических режимов, которые воздействуют на вывод. Графические объекты включают карандаши для рисования линий, кисти для закрашивания и заполнения, битовые образы для копирования или прокрутки части экрана, цветовые палитры для определения набора доступных цветов, области для отсечения и других операций, а также контуры для операций рисования и закрашивания.

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

Существуют четыре типа контекстов устройств:

• экранный – поддерживает операции рисования непосредственно на экране;

• принтера – поддерживает операции рисования непосредственно на принтере или плоттере;

• памяти – поддерживает операции рисования непосредственно в битовых массивах;

• информационный – поддерживает получение данных об устройстве.

Приложение может осуществлять следующие операции над контекстом устройства:

• перечисление существующих графических объектов;

• выбор новых графических объектов;

• удаление существующих графических объектов;

• сохранение графических объектов, их атрибутов и параметров графических режимов;

• восстановление графических объектов, их атрибутов и параметров графических режимов.

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

Экранный контекст устройства

Приложение получает контекст устройства экрана посредством вызова функций BeginPaint, GetDC или GetDCEx. Полученный контекст устройства идентифицирует окно, в которое будет непосредственно осуществляться вывод. Как правило, приложение получает контекст устройства экрана непосредственно перед тем, когда ему необходимо рисовать в клиентской области. Когда приложение завершает вывод, то оно обязано освободить контекст устройства, вызвав одну из соответствующих функций: EndPaint или ReleaseDC.

Поделиться:
Популярные книги

Как я строил магическую империю 4

Зубов Константин
4. Как я строил магическую империю
Фантастика:
боевая фантастика
постапокалипсис
аниме
фантастика: прочее
фэнтези
5.00
рейтинг книги
Как я строил магическую империю 4

Безумный Макс. Поручик Империи

Ланцов Михаил Алексеевич
1. Безумный Макс
Фантастика:
героическая фантастика
альтернативная история
7.64
рейтинг книги
Безумный Макс. Поручик Империи

Попаданка 3

Ахминеева Нина
3. Двойная звезда
Любовные романы:
любовно-фантастические романы
5.00
рейтинг книги
Попаданка 3

Муж на сдачу

Зика Натаэль
Любовные романы:
любовно-фантастические романы
5.00
рейтинг книги
Муж на сдачу

Призыватель нулевого ранга. Том 3

Дубов Дмитрий
3. Эпоха Гардара
Фантастика:
попаданцы
аниме
фэнтези
фантастика: прочее
5.00
рейтинг книги
Призыватель нулевого ранга. Том 3

На границе империй. Том 10. Часть 5

INDIGO
23. Фортуна дама переменчивая
Фантастика:
космическая фантастика
попаданцы
5.00
рейтинг книги
На границе империй. Том 10. Часть 5

Адвокат

Константинов Андрей Дмитриевич
1. Бандитский Петербург
Детективы:
боевики
8.00
рейтинг книги
Адвокат

На границе империй. Том 7

INDIGO
7. Фортуна дама переменчивая
Фантастика:
боевая фантастика
космическая фантастика
попаданцы
6.75
рейтинг книги
На границе империй. Том 7

Здравствуй, 1985-й

Иванов Дмитрий
2. Девяностые
Фантастика:
альтернативная история
5.25
рейтинг книги
Здравствуй, 1985-й

О, Путник!

Арбеков Александр Анатольевич
1. Квинтет. Миры
Фантастика:
социально-философская фантастика
5.00
рейтинг книги
О, Путник!

Чужбина

Седой Василий
2. Дворянская кровь
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Чужбина

Бестужев. Служба Государевой Безопасности. Книга четвертая

Измайлов Сергей
4. Граф Бестужев
Фантастика:
попаданцы
аниме
фэнтези
5.00
рейтинг книги
Бестужев. Служба Государевой Безопасности. Книга четвертая

Локки 5. Потомок бога

Решетов Евгений Валерьевич
5. Локки
Фантастика:
юмористическое фэнтези
аниме
фэнтези
5.00
рейтинг книги
Локки 5. Потомок бога

На границе империй. Том 10. Часть 4

INDIGO
Вселенная EVE Online
Фантастика:
боевая фантастика
космическая фантастика
попаданцы
5.00
рейтинг книги
На границе империй. Том 10. Часть 4