WindowsのC++処理系汎用のDIB(デバイスに依存しないビットマップ)を扱うクラスです。補助関数として、TGAやJPEG、PNGなどのファイル入出力や、エンボスやぼかしなどのエフェクト。全体として、処理速度よりもプログラム効率重視です。かなり汚いですが完全なソースコード付きですので、必要であれば参考にしてください。フリーなので自由に改変して使うとかしても構いません。VisualC++6.0とC++Builder4/5で使用できることを確認済みです。
| 例1 BMPファイルを読み込んで色深度とサイズを調整してから描画する |
DibStream *dib = new DibStream;
dib->LoadFromFile("hogehoge.bmp");
dib->ChangeBpp(24);
//もし横か縦が256より大きいサイズなら調整する
if(dib->GetWidth() > 256 || dib->GetHeight() > 256)
dib->Resize(min(256,dib->GetWidth()),min(256,dib->GetHeight()));
dib->Draw(hdc, 0, 0);
delete dib;
|
| 例2 任意の大きさを持ったフルカラービットマップを作成し、それに斜めのグラデーションを格納してBMPファイルに保存する |
int width=256, height=256;
DibStream *dib = new DibStream;
dib->Create(width,height,24);
for(int y=0; y<height; y++) {
BYTE *ptr = (BYTE *)dib->ScanLine(y);
for(int x=0; x<width; x++,ptr+=3)
ptr[0] = ptr[1] = ptr[2] = (BYTE)(x+y);
}
dib->SaveToFile("hogehoge.bmp");
delete dib;
|