Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
2 курс / Лекции / Лекция 9.pptx
Скачиваний:
42
Добавлен:
18.02.2023
Размер:
149.03 Кб
Скачать

Аппаратно-зависимые точечные рисунки (DDB)

Аппаратно-зависимые точечные рисунки (DDB)

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

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

Чтобы использовать формат DDB в контексте устройства, он должен иметь организацию цвета этого контекста устройства. Поэтому, аппаратно-зависимый растровый формат (DDB) часто называется совместимым точечным рисунком (compatible bitmap) и обычно имеет производительность в GDI выше, чем аппаратно- независимый растровый формат (DIB). Например, чтобы создать точечный рисунок для видеопамяти, лучше использовать совместимый точечный рисунок с тем же цветовым форматом, что и у основного дисплея. В видеопамяти же, точечный рисунок передается и показывается на экране значительно быстрее, чем он будет показан из оперативной памяти или непосредственно из формата DIB.

Существует два типа растровых форматов DDB:

удаляемый из памяти (незащищенный) и не удаляемый из

памяти (защищенный). Незащищенный растровый формат

(DDB) - это точечный рисунок, который система отвергает,

если он не выбран в контекст устройства (DC) и, если

недостаточно оперативной памяти.

 

Функция

CreateDiscardableBitmap

создает

Аппаратно-независимые точечные рисунки (DIB)

Аппаратно-независимый точечный рисунок (DIB) содержит таблицу цветов (color table). Таблица цветов описывает, как значения пикселя соответствуют значениям цветов RGB, которые характеризуют цвета, созданные излучением света. В соответствии с этим, растровый формат (DIB) может достигнуть надлежащей схемы цвета на любом устройстве. Аппаратно-независимый растровый формат (DIB) содержит нижеследующие цвета и информацию о размерах:

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

Разрешающая способность устройства на котором создавалось прямоугольное изображение.

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

Массив битов, который отображает красные, зеленые, синие (RGB) тройки пикселей в прямоугольном изображении.

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

Существует две разновидности форматов DIB:

Восходящий растровый формат DIB, начало координат которого находится в левом нижнем угле.

Нисходящий растровый формат DIB, начало координат которого находится в левом верхнем угле.

Если высота формата (DIB), как обозначено информацией точечного рисунка в члене Height структуры заголовка, является положительной величиной, это - восходящий аппаратно-независимый растровый формат (DIB); если высота - отрицательная величина, это - нисходящий аппаратно-независимый растровый формат (DIB). Нисходящие форматы DIB не могут сжиматься.

Цветовой формат определяется в единицах итогового числа битов цвета и цветовых плоскостей. Число цветовых плоскостей - всегда 1; число битов цвета - 1 для монохромных (одноцветных) точечных рисунков, 4 для точечных рисунков VGA, и 8, 16, 24, или 32 для точечных рисунков на других устройствах воспроизведения цвета. Приложение извлекает число битов цвета, для конкретного дисплея (или принтера) используя вызов функции

GetDeviceCaps, в которой второй параметр определен как

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

1.Вызовите функцию GetDeviceCaps, определяя второй параметр как HORZRES.

2.Вызовите GetDeviceCaps второй раз, определяя второй параметр как HORZSIZE.

3.Поделите первое возвращенное значение на второе.

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

вместо HORZRES, и VERTSIZE вместо HORZSIZE.

Пиктограммы

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

Приложения Windows должны иметь по меньшей мере одну пиктограмму и поддерживать пиктограммы с тремя разными размерами: большую пиктограмму с 256 цветами (48x48), пиктограмму с 16 цветами (32x32) и малую пиктограмму с 16 цветами (16x16). Малая пиктограмма отображается, когда приложение свернуто; кроме того она присутствует в левом верхнем углу окна приложения. Большая пиктограмма отображается на рабочем столе и в представлениях объектов. Дополнительные пиктограммы должны быть созданы для каждого типа данных, поддерживаемых приложением.

Пиктограммы, как и растровые изображения, обычно создаются с использованием редактора изображений SDK Image Editor Win32 или редактора пиктограмм Visual C++. Затем эти пиктограммы можно ввести в файл описания ресурса приложения с

помощью оператора ICON. Типичным примером использования

Создание пиктограмм во время выполнения

Система Windows позволяет создавать и модифицировать пиктограммы во время работы программы.

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

Как правило, не следует изменять пиктограммы во время выполнения, поскольку пользователи рассчитывают на то, что пиктограммы будут оставаться неизменными.

Метафайлы

Метафайлы представляют собой закодированные вызовы функций интерфейса графических устройств (GDI — Graphics Device Interface). При воспроизведении метафайла достигается такой же результат, как и при непосредственном использовании функций GDI.

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

Создание и воспроизведение метафайла

Метафайлы создаются в контексте устройства метафайла с использованием функций GDI. В качестве основы метафайла применяется справочный контекст устройства, что позволяет управлять размерами изображения на всех устройствах вывода. Этим справочным устройством является то устройство, на котором впервые появилось данное изображение.

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

В следующем коде создается метафайл, связанный с файлом на диске.

hMetaDC=CreateEnhMetaFile(hRefDC,"mymeta.emf",Srect,"Test

Метафайлы на диске предназначены для двух целей. Одна из них — возможность хранения графических данных для использования их в приложении. Метафайлы создаются по мере разработки приложения. Законченное приложение поставляется вместе с метафайлами на дистрибутивных дисках.

Вторая — возможность хранения графических данных для приложения, связанного с рисованием или черчением. Метафайлы являются идеальным средством отображения, если в приложении используются для черчения такие объекты, как линии, прямоугольники и эллипсы. Метафайлы не столь удобны, если приложение основано

Больше информации по пройденным темам:

на пиксельных данных.

http://

www.vsokovikov.narod.ru/New_MSDN_API/Bitmaps/ogl_bitm ap.htm

http://vunivere.ru/work60731 http://

www.vsokovikov.narod.ru/New_MSDN_API/Paint_draw/ogl_