LPSTR lpData=(LPSTR)GlobalAlloc(GPTR,size);
BITMAPINFOHEADER bih;
.....
GetDIBits(dc,bm,0,bih.biHeight,lpData,(BITMAPINFO*)&bih,DIB_RGB_COLORS);
CDC* hdc=GetDC();如何用StretchDIBits把DIB图像显示出来

解决方案 »

  1.   

    CFile bf;   
    if(bf.Open(name,CFile::modeCreate|CFile::modeWrite)){   
    bf.WriteHuge(&bfh,sizeof(BITMAPFILEHEADER));   
    bf.WriteHuge(&bih,sizeof(BITMAPINFOHEADER));   
    bf.WriteHuge(lpData,size);   
    bf.Close();   
    }   
    CDC* hdc=GetDC();
    StretchDIBits(*hdc,0,0,bih.biWidth,bih.biHeight,0,0,bih.biWidth,bih.biHeight,lpData,
    (BITMAPINFO*)&bih,DIB_RGB_COLORS,SRCCOPY);
    这个代码写入文件没有问题,用StretchDIBits显示不出来
      

  2.   

    DIB_RGB_COLORS,SRCCOPY 换换这两个参数看看
      

  3.   

    我觉得你不妨这样BITMAPINFO *pbi;
    HDC hDC=GetDC(hWnd);
    HBITMAP hBitmap;
    BYTE *pMem,*pBits;
    /*.
    .
    初始化pBits;
    初始化pbi;
    .*/
    hBitmap=CreateDIBitmap(hDC,&pbi->bmiHeader,CBM_INIT,pBits,pbi,DIB_RGB_COLORS);
    DrawState(hDC,NULL,(LPARAM)hBitmap,,,,,DST_BITMAP);//绘制