问题描述:使用GDI+画图到内存DC。画好后,我想把该DC、
上某区域(RECT指定)的内容转换成Bitmap对象,或者
Image对象。有没有方法?我试了Bitmap* FromHBITMAP这个方法,但是总是不成功。谢谢

解决方案 »

  1.   

    不知道你是否知道Opencv,可以先获得一个图像,然后获得你对图像的感兴趣区域,然后保存为另副图像就OK了,2个函数就可以搞定他!http://www.opencv.org.cn/index.php/VC6%E4%B8%8B%E5%AE%89%E8%A3%85%E4%B8%8E%E9%85%8D%E7%BD%AE可以看看专门对图像处理的中文网站
      

  2.   

    BITMAP bmp ;
    m_bmpMem.GetBitmap(&bmp); DWORD u32Count = bmp.bmHeight * bmp.bmWidthBytes;
    if(m_pBmpBuf != NULL)
    {
    delete [] m_pBmpBuf;
    m_pBmpBuf = NULL;
    }
    m_pBmpBuf = new BYTE[u32Count];
    if(m_pBmpBuf != NULL)
    {
    m_bmpMem.GetBitmapBits(u32Count, m_pBmpBuf);   //m_bmpMem是和DC关联的内存CBitmap,m_pBmpBuf 会存放m_bmpMem的数据
    m_pBmpBuf = NULL;                              //把你想要的数据从m_pBmpBuf 取出(自己计算RECT区域,然后取出区域的数                         //据),加一个 bmp的文件头组合成一个bmp,然后保存什么的就随便你了。
    }
      

  3.   

    创建一个内存DC,
    创建一个内存位图,需要计算好大小
    将内存位图选入内存DC,
    将需要的图像绘制到内存DC,
    将内存位图选出内存DC,然后再试试FromHBITMAP。
      

  4.   

    或者用
    Bitmap::Bitmap(BITMAPINFO*,VOID*)
    第二个参数看二楼,第一个参数自己创建一个,