Вывод спрайта BMP - Free Pascal

Узнай цену своей работы

Формулировка задачи:

Как организовать вывод BMP или любой другой формат изображения в FPC

Решение задачи: «Вывод спрайта BMP»

textual
Листинг программы
  1. How to load a BMP image from disk ?
  2.  
  3. 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.
  4.  
  5. procedure LoadBMP;
  6.  var f:file; bitmap:pointer; size:longint;
  7.  begin
  8.    {$I-} Assign(f,'image.bmp'); Reset(f,1); {$I+}
  9.    if (IOResult <> 0) then Exit;
  10.    size:=FileSize(f);
  11.    GetMem(bitmap,size);
  12.    BlockRead(f,bitmap^,size);
  13.    Close(f);
  14.    PutImage(0,0,bitmap^,NormalPut);
  15.    FreeMem(bitmap);
  16.  end;

Объяснение кода листинга программы

  1. Создаем процедуру LoadBMP
  2. Инициализируем переменные: — f:file (объект для работы с файлом) — bitmap:pointer (указатель на память, где будет храниться изображение) — size:longint (переменная для хранения размера изображения)
  3. Открываем файл 'image.bmp' с помощью Assign(f,'image.bmp') и Reset(f,1)
  4. Проверяем корректность открытия файла с помощью IOResult (если IOResult <> 0, значит что-то пошло не так и файл не открылся)
  5. Получаем размер файла с помощью FileSize(f)
  6. Выделяем память под изображение с помощью GetMem(bitmap,size)
  7. Читаем файл в выделенную память с помощью BlockRead(f,bitmap^,size)
  8. Закрываем файл с помощью Close(f)
  9. Выводим изображение на экран с помощью PutImage(0,0,bitmap^,NormalPut)
  10. Освобождаем память с помощью FreeMem(bitmap)
  11. Если что-то пошло не так (IOResult <> 0), то выходим из процедуры с помощью Exit.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

8   голосов , оценка 4.375 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы