0

HDC で選択された HBITMAP に GDI+ 描画を行うアプリケーションを開発中です。描画が完了したら、次のことを行う必要があります。

  1. hDC からビットマップを取得する
  2. そのビットマップを 4bpp ビットマップに変換します
  3. 4bpp ビットマップの raw ビットを他のメソッドに送信します。

私は本当に道に迷っており、GDI+ とハンドルは初めてです。誰でも私を助けることができますか?

4

2 に答える 2

4

GetDIBitsは、生のビットの変換と取得の両方に使用する関数、つまり(2)と(3)です。

BITMAPへのハンドルがまだない場合は、CreateCompatibleDCを使用して新しいDCを作成し、互換性のあるビットマップを作成して、ソースDCからターゲットDCにBitBltを実行する必要があります。次に、ターゲットDCとビットマップでGetDIBitsを実行して、必要なデータを取得します。

于 2012-07-23T14:37:42.450 に答える
1

まず、HBITMAPではなくHDCに描画します。HBITMAPは、HDCを介して描画されたデータを取得します。4bppデータを取得するには、新しいビットマップを作成する必要があります。ただし、このような色深度は低すぎます(16色のみ)。パレットベースですか?変換(色深度の減少)は、実際にはうまくいかない場合や、希望どおりに機能しない場合があります。32ビットビットマップからRGB値を読み取り、独自のコードを使用して4bppに変換することをお勧めします。それ以外の場合は、代わりに画像ライブラリが必要になります。これにより、必要に応じて変換が実行されます。

于 2012-07-23T14:43:42.160 に答える