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

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

Жанры

Шрифт:
...

Листинг 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.

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

За Горизонтом

Вайс Александр
8. Фронтир
Фантастика:
боевая фантастика
космическая фантастика
космоопера
5.00
рейтинг книги
За Горизонтом

Инженер Петра Великого 2

Гросов Виктор
2. Инженер Петра Великого
Фантастика:
попаданцы
альтернативная история
фэнтези
5.00
рейтинг книги
Инженер Петра Великого 2

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

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

Гром над Академией. Часть 1

Машуков Тимур
2. Гром над миром
Фантастика:
фэнтези
боевая фантастика
5.25
рейтинг книги
Гром над Академией. Часть 1

Искатель 6

Шиленко Сергей
6. Валинор
Фантастика:
рпг
фэнтези
попаданцы
гаремник
5.00
рейтинг книги
Искатель 6

Идеальный мир для Лекаря 19

Сапфир Олег
19. Лекарь
Фантастика:
юмористическое фэнтези
аниме
5.00
рейтинг книги
Идеальный мир для Лекаря 19

Звездная Кровь. Изгой

Елисеев Алексей Станиславович
1. Звездная Кровь. Изгой
Фантастика:
боевая фантастика
попаданцы
рпг
5.00
рейтинг книги
Звездная Кровь. Изгой

Идеальный мир для Лекаря 17

Сапфир Олег
17. Лекарь
Фантастика:
юмористическое фэнтези
попаданцы
аниме
5.00
рейтинг книги
Идеальный мир для Лекаря 17

Мусорщик

Поселягин Владимир Геннадьевич
3. Наемник
Фантастика:
боевая фантастика
космическая фантастика
8.55
рейтинг книги
Мусорщик

Сильнейший Столп Империи. Книга 2

Ермоленков Алексей
2. Сильнейший Столп Империи
Фантастика:
аниме
фэнтези
фантастика: прочее
попаданцы
5.00
рейтинг книги
Сильнейший Столп Империи. Книга 2

Кодекс Охотника. Книга XII

Винокуров Юрий
12. Кодекс Охотника
Фантастика:
боевая фантастика
городское фэнтези
аниме
7.50
рейтинг книги
Кодекс Охотника. Книга XII

Фиктивный брак

Завгородняя Анна Александровна
Фантастика:
фэнтези
6.71
рейтинг книги
Фиктивный брак

Сын Тишайшего 3

Яманов Александр
3. Царь Федя
Фантастика:
попаданцы
альтернативная история
фэнтези
5.00
рейтинг книги
Сын Тишайшего 3

Оживший камень

Кас Маркус
1. Артефактор
Фантастика:
городское фэнтези
попаданцы
аниме
5.00
рейтинг книги
Оживший камень