Вывод спрайта BMP - Free Pascal
Формулировка задачи:
Как организовать вывод BMP или любой другой формат изображения в FPC
Решение задачи: «Вывод спрайта BMP»
textual
Листинг программы
How to load a BMP image from disk ?
Suppose we have a 24 bits format uncompressed BMP image on file 'image.bmp'. The following routine puts this image on screen, on the top-left corner.
procedure LoadBMP;
var f:file; bitmap:pointer; size:longint;
begin
{$I-} Assign(f,'image.bmp'); Reset(f,1); {$I+}
if (IOResult <> 0) then Exit;
size:=FileSize(f);
GetMem(bitmap,size);
BlockRead(f,bitmap^,size);
Close(f);
PutImage(0,0,bitmap^,NormalPut);
FreeMem(bitmap);
end;
Объяснение кода листинга программы
- Создаем процедуру LoadBMP
- Инициализируем переменные: — f:file (объект для работы с файлом) — bitmap:pointer (указатель на память, где будет храниться изображение) — size:longint (переменная для хранения размера изображения)
- Открываем файл 'image.bmp' с помощью Assign(f,'image.bmp') и Reset(f,1)
- Проверяем корректность открытия файла с помощью IOResult (если IOResult <> 0, значит что-то пошло не так и файл не открылся)
- Получаем размер файла с помощью FileSize(f)
- Выделяем память под изображение с помощью GetMem(bitmap,size)
- Читаем файл в выделенную память с помощью BlockRead(f,bitmap^,size)
- Закрываем файл с помощью Close(f)
- Выводим изображение на экран с помощью PutImage(0,0,bitmap^,NormalPut)
- Освобождаем память с помощью FreeMem(bitmap)
- Если что-то пошло не так (IOResult <> 0), то выходим из процедуры с помощью Exit.