CreateBitmapFromHBITMAP
ファクトリ メソッドを使用して、HBITMAP から IWICBitmap を簡単に生成できます。しかし、IWICBitmapSource から単純な GDI ビットマップを取得するにはどうすればよいでしょうか。
質問する
2702 次
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 に答える