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

Чтобы изображение загрузить с диска в оперативную память и получить дескриптор изображения (типа HBITMAP), предназначены функции LoadBitmap( ) и LoadImage( ). Так, например, из файла с расширением .bmp изображение можно прочитать при помощи функции Load Image ( ):

HBITMAP Bit - (HBITMAP) LoadImage(NULL."Tstl0_3.bmp",IMAGE_BITMAP.0.0.
LR_LOADFROMFILE | LR_CREATEDIBSECTION);

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

Значение NULL первого параметра указывает, что картинка вводится из файла. При получении изображения из ресурса в первом параметре указывается дескриптор приложения. Во втором параметре задается имя файла или идентификатор ресурса. Третий параметр задает тип изображения и может принимать значения IMAGE_BITMAP, IMAGE_CURSOR, IMAGEJCON. Четвертый и пятый параметры, которые указывают размеры изображения, при вводе битовой карты задаются нулями, так как эта информация имеется в заголовке BMP-файла. Шестой параметр содержит сочетание флагов. В частности, флаг LRJ-OADFROMFILE указывает, что изображение вводится из файла. При задании флага LR_CREATED IBSECTI ON создается аппаратно-независимое, а при его отсутствии - аппаратно-зависимое растровое изображение.

В дальнейших проектах будет использоваться функция загрузки битовой карты, которая получает путь к файлу Name и тип растра Туре. Нулевое значение будет означать, что используется тип DIB, а единичное значение будет применяться для типа DDB. Код соответствующей функции приведен в листинге 17.1.

Листинг 17.1

HBITMAP LoadPict(char *Name.int Type) {
if(Type)
return LoadImage(NULL.Name. IMAGE_BITMAP.0.0.LR_LOADFROMFILE); else return LoadlmageCNULL.Name.IMAGEJBITMAP.0.0.
LR_LOADFROMFILE|LR_CREATEDIBSECTION);
}

Функция Load Image () позволяет загружать из ресурса битовую карту, курсор или пиктограмму, но для этого более удобны простые специализированные функции LoadBitmap(), LoadCursorO, LoadlconO, которые уже рассматривались ранее.


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