VB6.0用掲示板の過去のログ(No.2)−VBレスキュー(花ちゃん)
[記事リスト] [新規投稿] [新着記事] [ワード検索] [管理用]

投稿日: 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)の解放処理も忘れずに。


- 関連一覧ツリー (★ をクリックするとツリー全体を一括表示します)

- 返信フォーム (この記事に返信する場合は下記フォームから投稿して下さい)

- VBレスキュー(花ちゃん) - - Web Forum -