DIBのクラスを自作する。

これは、検索すれば、すぐサンプルは出てくる。

まずは、COLORREF対応のみ。

 

ビットマップハンドル HBITMAP から DIB を作成するのは、以下の関数。

 

---------------------------------------------------------------------------

    DDB (CDC , CBitmap 等)  → DIB (BYTE配列) 変換
    GetDIBits() : 指定されたビットマップのビットを取得し、指定された形式でバッファにコピー
    int GetDIBits(
      HDC           hdc        , // デバイスコンテキストのハンドル
      HBITMAP       hbmp       , // ビットマップのハンドル
      UINT          uStartScan , // 取得対象の最初の走査行
      UINT          cScanLines , // 取得対象の走査行の数
      LPVOID        lpvBits    , // ビットマップのビットからなる配列
      LPBITMAPINFO  lpbi       , // ビットマップデータのバッファ
      UINT          uUsage       // RGB とパレットインデックスのどちらか
    );

    戻り値 : 関数が成功すると、コピーされた走査行の数が返ります。
----------------------------------------------------------------------------

 

BYTE 配列のサイズ計算とか、確保とか、メモリ破棄とか、それもあるんだけれど。

 

全部書いていると、ブログでは書ききれないし、参考にならない。

 

透過設定は、後で付け加える。最初から32ビットで作成すると、HBITMAPと連係できない。