C++ CreateBitmap()返回颠倒的图像

C++ CreateBitmap()返回颠倒的图像,c++,file,winapi,bitmap,C++,File,Winapi,Bitmap,我加载保存的位图的位数组。(和BitMapInfo标头结构) 我得到颠倒的图像。我怎样才能修好它?(我认为反转bitsArray将是一个解决方案,但也许有更好的方法?调用CreateDIBitmap,并在BITMAPV5HEADER中使用正高度或负高度,以使位图正确上升。–David Heffernan 37分钟前调用CreateDIBitmap,并在BitMapv5头中使用正或负高度,以使位图正确向上David Heffernan 37分钟前位图通常是颠倒存储的。如果高度为正,则假定为自下而上

我加载保存的位图的位数组。(和BitMapInfo标头结构)


我得到颠倒的图像。我怎样才能修好它?(我认为反转bitsArray将是一个解决方案,但也许有更好的方法?

调用CreateDIBitmap,并在BITMAPV5HEADER中使用正高度或负高度,以使位图正确上升。–David Heffernan 37分钟前

调用CreateDIBitmap,并在BitMapv5头中使用正或负高度,以使位图正确向上David Heffernan 37分钟前

位图通常是颠倒存储的。如果高度为正,则假定为自下而上,如果为负,则为自上而下。调用
CreateDIBitmap
,并在
BITMAPV5HEADER
中使用正高度或负高度,以使位图正确向上。据我所记得的Windows API文档(在Windows NT 3.x中)所述,“CreateBitmap”不应用于颜色位图。您应该使用CreateCompatibleBitmap和SetDiBits。我不知道为什么位图会反转,因为在.BMP文件中,位图已经颠倒存储,Windows API函数要求位图颠倒存储!位图通常是颠倒存储的。如果高度为正,则假定为自下而上,如果为负,则为自上而下。调用
CreateDIBitmap
,并在
BITMAPV5HEADER
中使用正高度或负高度,以使位图正确向上。据我所记得的Windows API文档(在Windows NT 3.x中)所述,“CreateBitmap”不应用于颜色位图。您应该使用CreateCompatibleBitmap和SetDiBits。我不知道为什么位图会反转,因为在.BMP文件中,位图已经颠倒存储,Windows API函数要求位图颠倒存储!那么,这帮了忙?那么,这帮了忙?
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);;
}