Last Updated 2005/08/24
Programming Tips Visual C++ MFC 他のコントロール  索 引 
ビットマップ保存
2005/08/24

スクリーン DC に描画したものをビットマップファイルとして保存する.

ヘルプでは以下が参考になる.
SDKs -> Win32 -> Overviews -> Graphics Device Interface -> Bitmaps -> Using Bitmaps -> Storing an Image


ビットマップファイルの構造は以下のようになっている.
   +------------------+
   |  ファイルヘッダ  |
   |(BITMAPFILEHEADER)|
   +------------------+
   |   情報ヘッダ     |
   |(BITMAPINFOHEADER)|
   +------------------+
   | パレットデータ   |
   |    (RGBQUAD)     |
   +------------------+
   |  イメージデータ  |
   |        .         |
   |        .         |
   |        .         |
   +------------------+


パレットデータの取得は GetSystemPaletteEntries()
ビットマップデータの取得は CreateCompatibleDC() して CreateCompatibleBitmap() で作ったビットマップを選択して BitBlt() で描画,GetDIBits() でイメージデータ取得

GetSystemPaletteEntries() 関数で使う PALETTEENTRY 構造体の RGB の並びと,実際にファイルに書き込むときに使う RGBQUAD 構造体の RGB の並びは逆になっているので注意が必要.

また,ビットマップの原点は左下である.(左上ではない)


参照
前後のTips
ビットマップ保存

DSS ProgrammingTipsCGI Ver2.01