Иллюстрированный самоучитель по SVGA

Приложение А. Рисунки в файлах BMP.

  • Общая характеристика стандарта

    Точечные или растровые рисунки являются одной из распространенных форм представления графической информации. Существует множество различных стандартов хранения таких рисунков на внешних носителях в виде файлов. В пятерку наиболее популярных входят BMP, PCX, TIFF, GIF и JPG.
  • Заголовок файла для Windows

    Первые точечные рисунки хранились в аппаратно-зависимом формате DDB (Device Dependent Bitmap). Такое представление было крайне неудобным, и разработчики Windows 3.0 отказались от него. Для нас оно не представляет интереса, поскольку не предназначено для современных видеосистем.
  • Заголовок файла для OS/2

    Оболочка Presentation Manager операционной системы OS/2 использует другой формат заголовка ВМР-файла. Разработчики OS/2 учли избыточность стандарта BMP для Windows и сократили заголовок до минимально необходимых размеров. Его структура показана в табл. А.2.
  • Образ рисунка в файле

    Исторически стандарт BMP предназначался для Windows, а в ней при построении изображений "по умолчанию" начало координат расположено в нижнем левом углу экрана. Значения по оси х возрастают слева направо, а по оси Y – снизу вверх.
  • Общая схема обработки заголовка файла. Возможные отклонения от стандарта.

    Для построения на экране рисунка, хранящегося в ВМР-файле, надо выпол-нить следующие действия: | ввести спецификацию и открыть файл для чтения; | прочитать заголовок и выбрать из него данные о рисунке и файле; | установить или преобразовать палитру используемых в рисунке цветов;
  • Ввод спецификации и открытие файла

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

    Действия, предшествующие построению рисунка, описаны ниже по шагам. На каждом шаге приводится обоснование действий и их программная реализация. Это сделано для того, чтобы описание и программирование конкретных действий были расположены близко друг к другу.
  • Анализ основных полей заголовка

    Для построения рисунка надо знать его ширину, высоту и размер строки в файле. Следует подчеркнуть, что ширина рисунка и размер строки в файле являются разными величинами и их значения чаще всего не совпадают. | Будем считать, что в разделе данных задачи описаны переменные: | iwidth dw 0;
  • Манипуляции с палитрой

    Для окончания обработки заголовка надо извлечь из него величины, необходимые для установки или преобразования палитры цветов. | Палитра применяется в тех случаях, когда цвет не указан в коде точки (biBitcnt = 1, 4 или 8), она содержит описание используемых в рисунке цветов и состоит из строк, количество которых изменяется от 2 до 256.
  • Построение рисунков, использующих палитру. Построение рисунка сверху вниз.

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

    При работе с BMP-файлами произвольного размера основным способом является построение изображения снизу вверх. В таком случае строки образа рисунка считываются в порядке их расположения в файле, а выводятся на экран начиная с последней строки рисунка.
  • Универсальная процедура построения рисунка

    В данном разделе описана универсальная процедура построения рисунка формата BMP, использующего палитру цветов. Двухцветные и 16-цветные рисунки хранятся в упакованном виде, поэтому процедура выбирает нужную подпрограмму для их распаковки.
Если Вы заметили ошибку, выделите, пожалуйста, необходимый текст и нажмите CTRL + Enter, чтобы сообщить об этом редактору.