2004年08月03日
ビットマップの表示
MFCでは外部のビットマップファイルを読み込むものが用意されてないし、DIB形式の表示すらない。
ってことで自分でDIB形式の構造体を用意して、DIBを表示するAPIを呼び出す必要があります。
1. ファイル読込
CFILE使ってオープンする場合。
pDib = (BYTE*)new char[file.GetLength()];
file.Read(pDib, file.GetLength());
pBmfh = (LPBITMAPFILEHEADER)pDib;
pBmih = (LPBITMAPINFOHEADER)(pDib + sizeof(BITMAPFILEHEADER));
pData = pDib + pBmfh->bfOffBits;
2. 表示
表示するAPIは他にもあるけど、hdcの取得にはGetSafeHdc()を使いましょう。
::StretchDIBits(pDC->GetSafeHdc(),
0, 0, pBmih->biWidth, pBmih->biHeight,
0, 0, pBmih->biWidth, pBmih->biHeight,
pData, (LPBITMAPINFO)pBmih, DIB_RGB_COLORS, SRCCOPY);