Как загрузить и вывести картинку используя WinApi?
Объясните, как загрузить и вывести битмап?
Также насколько я понял не все bmp картинки подходят, какие есть для них требования?
Ответы (1 шт):
Автор решения: t3f
→ Ссылка
Вариант 1 - GDI
// загрузка bitmap-а из файла:
HBITMAP hBmp = (HBITMAP)LoadImage(NULL, L"C:\\файл.bmp", IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE);
// создание memory DC для этого bitmap-а:
HDC bmpDC = CreateCompatibleDC(wndDC);
SelectObject(bmpDC, hBmp);
// вывод (wndDC - HDC окна):
BitBlt(wndDC, 0, 0, width, height, bmpDC, 0, 0, SRCCOPY);
// освобождение ресурсов:
DeleteDC(bmpDC);
DeleteObject(hBmp);
Вариант 2 - GDI+
Заголовочный файл и пространство имён:
#include <gdiplus.h>
using namespace Gdiplus;
Ещё нужно прилинковать библиотеку импорта gdiplus.lib. В Visual Studio для этого можно использовать директиву:
#pragma comment(lib, "gdiplus.lib")
GDI+ требует предварительной инициализации, при запуске приложения нужно выполнить:
ULONG_PTR gdiToken;
GdiplusStartupInput gdiInput;
GdiplusStartup(&gdiToken, &gdiInput, NULL);
А при завершении приложения:
GdiplusShutdown(gdiToken);
Загрузка и вывод bitmap-а:
Graphics graphics(wndDC); //wndDC - HDC окна
Bitmap bmp(L"C:\\файл.bmp");
graphics.DrawImage(&bmp, 0, 0, width, height);
Вариант 3 - Direct2D
Рекомендуемый Microsoft (GDI и GDI+ объявлены устаревшими), но самый неудобный вариант - требуется писать слишком много кода, для такой простой задачи (поэтому писать его здесь я не буду). На MSDN есть примеры:
Creating a Simple Direct2D Application