Если в заголовке biBitCount задано десятичное значение 16 (два байта на пиксел), то компонентам RGB выделяется по пять бит. При этом для хранения рассмотренного выше изображения потребуется только 254 байта. Заметим, что редактор Paint предлагает сохранять файлы с цветовой глубиной 4, 8 и 24 бита и не позволяет задать 16-битный цвет. Но если такой файл создан другими средствами, то редактор Paint успешно откроет файл и прочитает его содержимое.

Загрузка данных из ВМР-файла Объект Bitmap не только резервирует память для рисования функциями GDI, он также позволяет загружать в оперативную память растровые картинки. Загруженное изображение может храниться в описанном выше DIB-формате или в виде аппаратнО'Зависимого DDB-растра. В обоих случаях оно идентифицируется дескриптором типа HBITMAP. Данные в аппаратно-независимом DIB-формате являются просто копией данных соответствующего файла .bmp. Первые четырнадцать байт файла (структура BITMAPFILEHEADER) в оперативную память не загружаются, а структура BITMAPINFOHEADER сохраняется как составная часть структуры DIBSECTION, создаваемой при загрузке картинки.

При использовании аппаратно-независимого формата программист может получить доступ ко всем элементам структуры BITMAPINFOHEADER и графическим данным объекта Bitmap при помощи соответствующего указателя. Но эти данные не используются для непосредственного управления экраном, так как они всегда хранятся в системной памяти, а не в специализированной видеопамяти. Формат пиксела в оперативной памяти может отличаться от того формата, который должен заноситься в видеопамять для индикации точки такого же цвета. Например, в DIB-формате может использоваться 24 бита для задания пиксела, а графический адаптер в этот момент может работать в режиме HiColor с цветовой глубиной 16 бит. При этом ярко-красная точка в аппаратно-независимом формате будет задаваться тремя байтами OOOOff, а в видеопамяти - словом F800. При копировании картинки на экран система будет тратить дополнительное время на преобразование кодов цвета из 24-битного формата в формат видеобуфера.


⇐ Предыдущая| |Следующая ⇒