这段代码为什么把位图在内存缩放后只能2色显示?  
 void StrectBMP(char * fileSrc,HDC ClientDc,double proportion) 

BITMAP srcInfo; 
HBITMAP HBmpSource=(HBITMAP)LoadImage(0,fileSrc,IMAGE_BITMAP,0,0,LR_LOADFROMFILE); 
      
    HDC hsrc=CreateCompatibleDC(NULL); 
HGDIOBJ hold=SelectObject(hsrc,HBmpSource); 
GetObject(HBmpSource,sizeof(BITMAP),(LPVOID)&srcInfo); HDC hDest=CreateCompatibleDC(NULL); 
int mode=SetStretchBltMode(hDest,COLORONCOLOR); 
// SelectStockObject(hDest,BLACK_BRUSH); 
HBITMAP hmemBmp=CreateCompatibleBitmap(hDest,srcInfo.bmWidth, 
                            srcInfo.bmHeight); 
  HGDIOBJ holdsrc=SelectObject(hDest,hmemBmp); BOOL b=StretchBlt(hDest,0,0,srcInfo.bmWidth,srcInfo.bmHeight,hsrc,0,0, 
           srcInfo.bmWidth,srcInfo.bmHeight,SRCCOPY);     b= BitBlt(ClientDc,0,0,srcInfo.bmWidth,srcInfo.bmHeight,hDest,0,0,SRCCOPY); 
}  
 

解决方案 »

  1.   

    ClientDc=GetDC(hWnd);//窗口显示区HDC
    fileSrc为位图文件路径.
    各位大大帮忙呀,分不够可一再给,在线等.
      

  2.   

    改成
    HBITMAP hmemBmp=CreateCompatibleBitmap(ClientDC,srcInfo.bmWidth, 
                                srcInfo.bmHeight);
      

  3.   

    谢谢qunta(J2Y2) ,马上给分.当我的目的是想在内存中先把位图缩小后取位图数据,BitBlt只是想看到内存作图的实际效果.不知道可以在以上代码基础上实现吗?