HDC で選択された HBITMAP に GDI+ 描画を行うアプリケーションを開発中です。描画が完了したら、次のことを行う必要があります。
- hDC からビットマップを取得する
- そのビットマップを 4bpp ビットマップに変換します
- 4bpp ビットマップの raw ビットを他のメソッドに送信します。
私は本当に道に迷っており、GDI+ とハンドルは初めてです。誰でも私を助けることができますか?
HDC で選択された HBITMAP に GDI+ 描画を行うアプリケーションを開発中です。描画が完了したら、次のことを行う必要があります。
私は本当に道に迷っており、GDI+ とハンドルは初めてです。誰でも私を助けることができますか?
GetDIBitsは、生のビットの変換と取得の両方に使用する関数、つまり(2)と(3)です。
BITMAPへのハンドルがまだない場合は、CreateCompatibleDCを使用して新しいDCを作成し、互換性のあるビットマップを作成して、ソースDCからターゲットDCにBitBltを実行する必要があります。次に、ターゲットDCとビットマップでGetDIBitsを実行して、必要なデータを取得します。
まず、HBITMAPではなくHDCに描画します。HBITMAPは、HDCを介して描画されたデータを取得します。4bppデータを取得するには、新しいビットマップを作成する必要があります。ただし、このような色深度は低すぎます(16色のみ)。パレットベースですか?変換(色深度の減少)は、実際にはうまくいかない場合や、希望どおりに機能しない場合があります。32ビットビットマップからRGB値を読み取り、独自のコードを使用して4bppに変換することをお勧めします。それ以外の場合は、代わりに画像ライブラリが必要になります。これにより、必要に応じて変換が実行されます。