OnDraw中的一段代码:
int w,h ;
w = pDoc->pImage->Width() ;
h = pDoc->pImage->Height() ;
CDC dcMem;                               
CBitmap bmp;                      
dcMem.CreateCompatibleDC(pDC);   
bmp.CreateCompatibleBitmap(&dcMem,rect.Width(),rect.Height()) ;
dcMem.SelectObject(&bmp); 
dcMem.FillSolidRect(rect,pDC->GetBkColor());
POINT pt ;
pt.x = 100 ;
pt.y = 100 ;
StretchDIBits(dcMem.m_hDC,10,30,w,h,0,h,w,-h,pDoc->pImage->m_pBits,pDoc->pImage->lpbmi,DIB_RGB_COLORS,SRCCOPY) ;
int rt = pDC->BitBlt(0,0,rect.Width(),rect.Height(),&dcMem,0,0,SRCCOPY);//将内存DC上的图象拷贝到前台
dcMem.DeleteDC();
//删除DC
bmp.DeleteObject() ;
说明:
   pDoc->pImage  是我用OpenCV已经读取的图像IplImage封装成了类
 m_pBit是其图像数据指针 
为什么会把所有图像都显示成黑白的

解决方案 »

  1.   


    StretchDIBits(dcMem.m_hDC,10,30,w,h,0,h,w,-h,pDoc->pImage->m_pBits,pDoc->pImage->lpbmi,DIB_RGB_COLORS,SRCCOPY) ; 
    //应该是DIB_RGB_COLORS参数在起作用,你可以调整一下换成其他的参数
      

  2.   

    是不是pDoc->pImage->lpbmi的信息有问题,检查一下各字段是否有不对的地方。
      

  3.   

     先谢谢各位同道的回帖
    rect 使用GetClientRect 获得的
    如果我直接用StretchDIBits(pDC->m_hDC,10,30,w,h,0,h,w,-h,pDoc->pImage->m_pBits,pDoc->pImage->lpbmi,DIB_RGB_COLORS,SRCCOPY) ; 是没有问题的,只是对于大图片会出项闪烁。我在网上搜索知道用双缓冲能避免闪烁 但是网上给的例子都只是用  dcMem 绘线矩形 没有绘图像的。 我只是想找一个快速显示图像的方法  肯请各位高手不吝赐教 !
      

  4.   

    pDisplayMemDC->CreateCompatibleDC(pDC);   
    pBitmap->LoadBitmap(IDB_TITLE_BMP);
    pOldBitmap=(CBitmap *)pDisplayMemDC->SelectObject(pBitmap);
    pBitmap->GetObject(sizeof(bm),&bm); 
            pBitmap->LoadBitmap(IDB_SET1_BMP);
    pDisplayMemDC->SelectObject(pBitmap);
    pBitmap->GetObject(sizeof(bm),&bm);
    pDC->StretchBlt(m_rect_wnd.right-100,
                            m_rect_wnd.top+20,
                            bm.bmWidth,
                            bm.bmHeight,
                            pDisplayMemDC,
                            0,
                            0,
                            bm.bmWidth,
                            bm.bmHeight,
                            SRCCOPY);
    pBitmap->DeleteObject();
      

  5.   

    搞定了 我先把读取的数据妆化为CBitmap 对象
    http://blog.csdn.net/zhenxiaohui/archive/2009/07/31/4396237.aspx
    在着了看到的