投稿日 | : 2007/05/11(Fri) 17:56 |
投稿者 | : 魔界の仮面弁士 |
Eメール | : |
URL | : |
タイトル | : Re^3: メモリDCからビットマップファイルに保存するには? |
> そこで、メモリDC上にあるビットマップをそのままファイルに落とすことが出来ないだろうかと
メモリデバイスコンテキスト上のメモリビットマップは、PictureBox のサイズに
なっているのですか? それとも、最終的に出力する *.bmp ファイルの画像サイズですか?
もし、最終的に出力するサイズ大のメモリビットマップを用意できていないなら、
まずは CreateCompatibleBitmap で HBITMAP を作り、そこに描画する必要があるでしょう。
で、そのメモリビットマップへの描画が終わったのであれば、使用していた
メモリデバイスコンテキストから、そのメモリビットマップを取り外して(SelectObject)、
その後、描画した HBITMAP の画像データを、GetDIBits API を使ってバッファへコピー。
あとは Open ステートメントで、新規バイナリファイルを作成して、
BITMAPFILEHEADER 構造体を Put # して(オフセット値を間違えないように注意)、
BITMAPINFOHEADER 構造体を Put # して、最後に、先ほど GetDIBits で得た
バッファを Put # して、ファイルを Close すれば、bmp ファイルになるかと。
--- 追記 ---
もし、256色以下のファイルを作る場合は、BITMAPINFOHEADER の後に、パレットカラーとして
色数分の RGBQUAD 構造体を入れておいてください(フルカラー画像の場合は不要です)。
それから、作成した GDI オブジェクト(HDC, HBITMAP)の解放処理も忘れずに。