求一个思路 问题描述:使用GDI+画图到内存DC。画好后,我想把该DC、上某区域(RECT指定)的内容转换成Bitmap对象,或者Image对象。有没有方法?我试了Bitmap* FromHBITMAP这个方法,但是总是不成功。谢谢 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 不知道你是否知道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可以看看专门对图像处理的中文网站 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,然后保存什么的就随便你了。 } 创建一个内存DC,创建一个内存位图,需要计算好大小将内存位图选入内存DC,将需要的图像绘制到内存DC,将内存位图选出内存DC,然后再试试FromHBITMAP。 或者用Bitmap::Bitmap(BITMAPINFO*,VOID*)第二个参数看二楼,第一个参数自己创建一个, GDI+的选择功能怎么做,就是框选一部分图形进行处理 文本长度问题 Unicode字符集转换问题 100分相赠:DHTML改变网页内容问题:在Document Complete事件里找到了Cell的IHTML指针,相在该Cell插入一个本地的图片,但是总是显示红叉 关于Active控件的一个问题,请高手指点 如何把表示一个char的16进制数的高位和低位分开 阻止程序被重复打开 vc在编译或连接的时候总停在那儿? Linux问题 为什么我在DEBUG 程序时会出现这种情况呢? 用MFC做使用记录显示器 Cool Edit pro的那个频谱图是怎么画出来的呢?
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,然后保存什么的就随便你了。
}
创建一个内存位图,需要计算好大小
将内存位图选入内存DC,
将需要的图像绘制到内存DC,
将内存位图选出内存DC,然后再试试FromHBITMAP。
Bitmap::Bitmap(BITMAPINFO*,VOID*)
第二个参数看二楼,第一个参数自己创建一个,