2

CreateBitmapFromHBITMAPファクトリ メソッドを使用して、HBITMAP から IWICBitmap を簡単に生成できます。しかし、IWICBitmapSource から単純な GDI ビットマップを取得するにはどうすればよいでしょうか。

4

2 に答える 2

4

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());
于 2013-07-25T19:34:34.900 に答える
1

バックグラウンドIWICBitmapSourceで GDI ビットマップが使用されているという保証はありません。メソッドを使用して生のビットにアクセスできますがIWICBitmap::Lock、GDI 関数でビットマップを使用する場合は、GDI ビットマップを作成し、自分でビットをコピーする必要があると思います。

于 2013-07-11T20:14:24.217 に答える