Листинг 16.7
KillTimer(hWnd. 1);
DeleteObj ect(SelectObject(hdcMem.hBrush)); DeleteObject(hFon): DeleteObject(hBit); DeleteDCChdcMem);
Таким же образом можно организовать движение по статическому фону плоских картинок. Организация движения основана на предварительной загрузке заготовок спрайтов в контекст памяти и последующем копировании одной из заготовок в заданный участок видеобуфера. Но в этом случае создается маленькая поверхность рисования по размеру спрайта, а не по размеру окна.
Работа с растровыми изображениями Хранение графических данных в формате bmp
Приложения, работающие в системе Windows, часто сохраняют изображения в файлах с расширением .BMP. Изображение записывается в этот графический файл в DIB-формате. Чтобы изучить этот формат, следует создать при помощи редактора Paint изображение размером 10x10 точек, состоящее из десяти строк разного цвета. В первой строке будут располагаться десять серых точек, а в последней - десять белых. Если сохранить этот файл с именем Tstl0_3.bmp, то можно заметить, что размер файла равен 374 байтам. Этот размер складывается из заголовка, содержащего 54 байта, и 320 байт, кодирующих цвета ста точек изображения. Цвет каждой точки кодируется тремя байтами, в которых задаются значения интенсивности цветовых компонентов. Белый цвет будет обозначаться тремя байтами с шестнадцатеричными кодами f f f f f f. У серого цвета значения интенсивности компонентов будут меньше, но тоже будут одинаковыми, например сО сО сО. Для хранения десяти точек одной строки достаточно 30 байт, но считается, что число байт в строке должно быть кратно четырем. Поэтому каждая строка состоит из 32 байт, причем два последних байта заполнены нулями.
Если рассмотреть содержимое файла в шестнадцатеричном формате, то можно увидеть следующие данные, которые для наглядности разбиты на строки и разделены знаками подчеркивания (символов перевода строки и подчеркивания, конечно, в файле не было):
42 4d_76 01 00 00_00 00_00 00_36 00 00 00
28 00 00 00_0а 00 00 00_0а 00 00 00_01 00_18 00_00 00 00 00