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; |