一幅是256色灰度图,一幅是256色彩色图,用StretchDIBits的方式叠加后,如何将叠加后的结果保存
char* path="D:\\新建文件夹\\5.bmp";//灰度图
CDib dib3;
dib3.Load(path);
CClientDC dc3(this);
dib3.SetPalette(&dc3);
dib3.Draw(&dc3); //读取伪彩色编码处理过的彩色图
char* path2="D:\\新建文件夹\\2.bmp";
CDib dib12;
dib12.Load(path2);
CClientDC dc12(this);
dib12.SetPalette(&dc12);
dib12.Draw(&dc12,0,0,-1,-1,SRCAND);//BOOL Draw( CDC *, int nX = 0, int nY = 0, int nWidth = -1, int nHeight = -1, int mode = SRCCOPY);
两幅图叠加后的结果在屏幕中显示,达到了预期效果,我想把结果保存在bmp中,但不知道该怎么实现。

解决方案 »

  1.   

    CDC *pDC = GetWindowDC();
     CDC  memDC;
     memDC.CreateCompatibleDC(pDC)  ; 
     CRect rt;
     GetWindowRect(&rt);
     CBitmap Bmp;
     Bmp.CreateCompatibleBitmap(pDC,rt.Width(), rt.Height())  ; 
     CBitmap *pBmpPrev   =   (CBitmap*)memDC.SelectObject(&Bmp)   ;
     memDC.BitBlt(0,   0,   rt.Width(),   rt.Height(),   pDC,   0,   0,   SRCCOPY);  
     CImage image; 
     image.Attach((HBITMAP)Bmp.m_hObject);
     image.Save(L"c:\\1.bmp");
    类似参考
      

  2.   

    to fishion:
    我用的是Vc6.0 其中CImage的头文件atlimage.h用不了,
    我在同学VS2010试了下,没有得到结果,不知道为什么
      

  3.   

    to swandream:
    可否详细一点
      

  4.   

    要么自己填充两幅叠加后的图像数据,要么你就象拷贝屏幕似的,把两幅叠加后的显示拷贝下来,关于截屏,可以参考这个例子
    http://file.ddvip.com/2007_03/1174124530_ddvip_2476.rar