1

保存したビットマップのビット配列を読み込みます。(および BITMAPINFOHEADER 構造)。

HBITMAP Filemanager::LoadNextImageFromMyFile(HANDLE file)
{
HDC hdc = GetDC(father->hWindow->_hwnd);
DWORD dwTmp; 
BITMAPFILEHEADER hdr;
ReadFile(file,&hdr,sizeof(BITMAPFILEHEADER),&dwTmp,NULL);
BITMAPINFOHEADER pbih; 
ReadFile(file, &pbih,sizeof(BITMAPINFOHEADER) 
    + hdr.bfReserved1 * sizeof (RGBQUAD),&dwTmp,NULL);
LPBYTE lpBits = (LPBYTE) GlobalAlloc(GMEM_FIXED, pbih.biSizeImage);
BYTE* hp = lpBits;
ReadFile(file,hp,pbih.biSizeImage, &dwTmp, NULL);
return CreateBitmap(pbih.biWidth,pbih.biHeight,pbih.biPlanes,pbih.biBitCount, hp);;
}

逆さまのイメージになってしまいます。どうすれば修正できますか?(bitsArray を逆にすることが解決策になると思いますが、もっと良い方法があるのではないでしょうか?)

4

1 に答える 1

1

CreateDIBitmap を呼び出し、BITMAPV5HEADER で正または負の高さを使用して、ビットマップを正しい方法で取得します。– David Heffernan 37 分前

于 2013-11-09T00:03:31.923 に答える