Легко создавать IWICBitmap из HBITMAP с CreateBitmapFromHBITMAP
заводской метод. Но как получить простое растровое изображение GDI из IWICBitmapSource?
К сожалению, нет возможности конвертировать IWICBitmap
к HBITMAP
или получить один из IWICBitmapSource
, Вы могли бы, однако, легко создать HBITMAP
из пиксельного буфера, если формат совместим с чем CreateBitmap
надеется.
Предполагая 32-битное растровое изображение RGBA:
IWICBitmapSource *bitmap_source = some_func();
UINT width = 0, height = 0;
bitmap_source->GetSize(&width, &height);
std::vector<BYTE> buffer(width * height * 4);
bitmap_source->CopyPixels(0, width * 4, buffer.size(), buffer.data());
HBITMAP bitmap = CreateBitmap(width, height, 1, 32, buffer.data());
Там нет гарантии, что за кадром IWICBitmapSource
даже использует растровое изображение GDI. Вы можете получить доступ к необработанным битам, используя IWICBitmap::Lock
метод, но если вы хотите использовать растровое изображение с функциями GDI, я думаю, вам нужно будет создать растровое изображение GDI и скопировать биты в него самостоятельно.