DIBLIB API
- CREATEBITMAP概要
- CREATEBITMAPリファレンス
- CPalette概要
- CPaletteリファレンス
- CDIBitmap概要
- CDIBitmapリファレンス
●CREATEBITMAP概要
ビットマップの白紙作成時に与える情報を保持する構造体です。
値は幅・高さ・解像度・使用色数です。
CDIBitmapのコンストラクタ・Create関数で使います
●CREATEBITMAPリファレンス
cbWidth 幅
cbHeight 高さ
cbBitCount 1ピクセルあたりのビット数です。
例えばモノクロだと2、フルカラーだと24になります。
cbUsedColor 使用色です。
フルカラービットマップは0にしてください。
また、BitCountが持てる最大の色数よりも
大きくしないでください。
●CPalette概要
ビットマップに含まれるカラーテーブル(PALETTEENTRY構造体の配列)を
管理するクラスです。
CDIBitmap::GetPaletteとCDIBitmap::SetPaletteを
使って、カラーテーブルの取得・書き換を行えます。
CPalette::Load,Save関数を使うとRIFFパレットファイル(拡張子pal)
として保存・読みこみができます。
●CPaletteリファレンス
■ CPalette (コンストラクタ)
CPalette();
エントリ数が0の空のパレットを構築します。
CPalette(UINT);
エントリ数を指定してオブジェクトを構築します。
エントリの中身は0です。
CPalette(const CPalette &);
コピーコンストラクタです。
■ ~CPalette (デストラクタ)
~CPalette();
オブジェクトを破棄します。
実際に呼び出すことはありません。
■ Create
void Create(UINT in_NewEntries);
新しいエントリ数を持つオブジェクトを構築します。
エントリの値はすべて0です。
void Create(const CPalette&);
同じものを構築します。
void Create(const CPalette&,UINT,UINT);
指定したパレットのエントリの一部からパレットを構築します。
第二引数は開始位置
第三引数はエントリ数です。
■ Load
bool Load(LPCTSTR);
RIFFパレットファイルから読みこみます。
引数はフルパスです。
失敗するとfalse、成功するとtrueが戻ります
■ Load
void Save(LPCTSTR);
現在のパレットをRIFFパレットに出力します。
引数はフルパスです。
■ GetNumEntries
UINT GetNumEntries() const;
現在のパレットのエントリ数を返します。
■ operator []
PALETTEENTRY &operator[](UINT in_Index);
const PALETTEENTRY &operator[](UINT in_Index) const;
指定したインデックスのエントリを
PALETTEENTRY構造体として取得します。
配列のようにアクセスできます。
値を書きかえることもできます。
■ GetPointer
PPALETTEENTRY GetPointer() const;
パレットをPALETTEENTRYの配列として取得します。
APIなどに渡すのに使用してください。
これをつかって書きかえることもできます。
■ GetColorAt
COLORREF GetColorAt(UINT in_Index) const;
指定したインデックスの色をCOLORRREFとして取得します。
■ GetColorAt
bool SetColorAt(UINT in_Index,BYTE,BYTE,BYTE);
指定したインデックスの色を成分で設定します。
順番は赤、緑、青です。
■ AddColors
void AddColors(PPALETTEENTRY,UINT);
現在のカラーテーブルの末尾にエントリを追加します。
一度に複数のエントリを追加できます。
第一引数はPALETTEENTRYの配列、第二引数は要素数です。
■ Swap
bool Swap(UINT in_Index1,UINT in_Index2);
二つのエントリを交換します。
■ Resize
void Resize(UINT in_NewSize);
カラーテーブルのエントリを拡張(縮小)して、
新しくバッファを確保しなおします。
拡張・縮小、いずれの場合でも
今までのカラーテーブルの内容が保持される点がCreateと違います。
拡張されたエントリの成分は0です。
●CDIBitmap概要
DIBLIBのメインとなるDIB情報を保持するクラスです。
すべての機能はこのクラスを介して行われます。
●CDIBitmapリファレンス
■ CDIBitmap(コンストラクタ)
CDIBitmap();
空のオブジェクトを構築します。
CDIBitmap(HDC,PCREATEBITMAP);
無地のビットマップを作成します。
CDIBitmap(HDC,LPCTSTR);
ファイルからビットマップを読みこみます。
フルパスを指定してください。
CDIBitmap(HDC,UINT,HMODULE);
リソースからビットマップを読みこみます。
ビットマップリソースを持つモジュールの
インスタンスハンドルとリソースIDを指定します。
■ ~CDIBitmap(デストラクタ)
virtual ~CDIBitmap();
オブジェクトを破棄します。
単独で呼び出すことはありません。
■ Release
void Release();
現在保持しているオブジェクトを破棄します。
■ GetUsedColor
DWORD GetUsedColor() const;
ビットマップの使用色を取得します。
フルカラービットマップのときは0です。
■ GetBitmapSize
DWORD GetBitmapSize() const;
画像ビットの占めるメモリのサイズを取得します。
画像サイズを取得する同名の関数と区別してください。
■ GetLineSize
DWORD GetLineSize() const;
画像ビットが一ラインあたり何バイトで
並べられているかを取得します。
■ IsEmpty
bool IsEmpty() const;
ビットマップが空かどうかを判断します。
■ operator HBITMAP
operator HBITMAP() const;
現在保持しているビットマップのハンドルを取得します。
空のオブジェクトであればNULLが返ります。
■ GetHeader
bool GetHeader(PBITMAPFILEHEADER,PBITMAPINFOHEADER) const;
ビットマップ情報を保持している各構造体を取得できます。
リソースから読みこんだ場合、
BITMAPFILEHEADER構造体はありません。
どちらか一方だけを取得したい場合、
もう片方の引数にはNULLを指定できます.
■ GetBitmapSize
bool GetBitmapSize(PSIZE) const;
現在のビットマップの幅と高さを取得します。
同名の関数があるので注意してください
■ GetPalette
bool GetPalette(CPalette &) const;
現在のビットマップが保持するカラーテーブルを
CPaletteとして取得します。
オブジェクトが空だったり、
フルカラービットマップが読みこまれている場合は、
この関数は失敗します。
■ SetPalette
bool SetPalette(const CPalette &);
現在のビットマップのカラーテーブルを書き換えます。
フルカラービットマップの場合は使えません。
また、エントリ数が解像度で再現できる最大色数を
超えている場合も失敗します。
すなわち、この関数で解像度を変更することはできません。
カラーテーブル変更後の画像を表示する場合、
ビットマップハンドルを更新する必要があります。
RefreshHandle関数を呼び出してください
■ Create
オブジェクトを再構築します。
この関数を呼び出す前に、Release関数を呼び出す必要はありません。
自動的に現在のビットマップは破棄されます。
bool Create(HDC,PCREATEBITMAP);
新しいビットマップは無地です。
bool Create(HDC,LPCTSTR);
新しいビットマップをファイルから読みこみます。
bool Create(HDC,UINT,HMODULE);
新しいビットマップをリソースから読みこみます。
■ Save
bool Save(LPCTSTR) const;
現在のビットマップをファイルとして保存します。
引数はフルパスです。
■ RefreshHandle
bool RefreshHandle(HDC);
ビットマップハンドルを更新します。
カラーテーブルを書き換えた画像を表示する場合、
この関数を呼び出す必要があります。
■ BitBlt
指定したデバイスコンテキストに現在のビットマップを転送・表示します。
void BitBlt(HDC in_hDC,int x,int y,DWORD in_Rop) const;
座標(x,y)に現在のビットマップ全体を転送します。
void BitBlt(HDC in_hDC,int x,int y,
int in_SrcX,int in_SrcY,int cx,int cy,DWORD in_Rop) const;
座標(x,y)に現在のビットマップの(in_SrcX,in_SrcY)を左上とする
幅cx,高さcyのビットマップを転送します。
■ StretchBlt
指定したデバイスコンテキストに現在のビットマップを
拡大・縮小して転送・表示します。
void StretchBlt(HDC in_hDC,int x,int y,
int cx,int cy,DWORD in_Rop) const;
座標(x,y)に現在のビットマップ全体を
幅cx,高さcyにサイズ変更して転送します。
void StretchBlt(HDC in_hDC,int x,int y,int cx,int cy,
int in_SrcX,int in_SrcY,
int in_SrcWidth,int in_SrcHeight,DWORD in_Rop) const;
座標(x,y)に現在のビットマップの(in_SrcX,in_SrcY)を左上とする
幅in_SrcWidth,高さin_SrcHeightのビットマップを
幅cx,高さcyにサイズ変更して転送します。
■ GetBits
LPBYTE GetBits();
ビットマップの画像ビットの先頭へのポインタを返します。
■ GetOffSet
int CDIBitmap::GetOffSet(int x,int y) const
指定した座標(x,y)を示す画像ビット上のオフセットを返します。
1,2,4ビットのビットマップでは、1バイトが1ピクセル以上であるので、
そのピクセル情報が含まれているアドレスのオフセットを返します。
また、8ビット以上のビットマップでは、そのピクセルの
先頭の値のアドレスへのオフセットを返します。
無効なビット数のときは、-1が返ります。
■ Get4bitPixel
char Get4bitPixel(int,int) const;
指定した座標(x,y)のカラーインデックス値を返します。
この関数は、16色ビットマップ専用で、それ以外の
ビットマップのときは、常に0を返します。
■ Set4bitPixel
int Set4bitPixel(int,int,unsigned char);
指定した座標を指定したカラーインデックス値で置き換えます。
画像ビットの値を変更するだけなので、
描画に反映させるには、再度BitBltなどの描画関数を呼び出してください。
※ RefreshHandleは必要ありません。