hur.cn - 华软网

 热门搜索

(Vc++6.0)MFC把界面某个区域保存为图片的,如在某区域画图后,想把那个区域的图形保存为图片?

  作者:未知    来源:网络    更新时间:2011/8/21
我在论坛上找了些代码。如下:
HDC   hActiveDC=::GetDC(this-> m_hWnd); 

HDC   hActiveWndCompatibleDC=CreateCompatibleDC(hActiveDC); 
HBITMAP   hActiveWndCompactibleBitmap=CreateCompatibleBitmap(hActiveDC,rect.right,rect.bottom); 
SelectObject(hActiveWndCompatibleDC,hActiveWndCompactibleBitmap); 
//把hActiveDC句柄所指定的当前客户区图复制到hActiveWndCompatibleDC中 
BitBlt(hActiveWndCompatibleDC,0,0,rect.right,rect.bottom,hActiveDC,0,0,SRCCOPY); 



//保存内存DC 
HDC   hBmpFileDC=CreateCompatibleDC(hActiveWndCompatibleDC); 
//创建一个位图可用作直接进行写操作 
HBITMAP   hBmpFileBitmap=CreateDIBSection(hActiveWndCompatibleDC,&bi,DIB_RGB_COLORS,&pBits,NULL,0); 
SelectObject(hBmpFileDC,hBmpFileBitmap); 

BitBlt(hBmpFileDC,0,0,nWidth,nHeight,hActiveWndCompatibleDC,0,0,SRCCOPY); 

CString   tempFileName;//目标文件名 
tempFileName   =   "D:\\MAP.bmp "; 
HANDLE   hFile=CreateFile(tempFileName,GENERIC_WRITE,FILE_SHARE_WRITE,NULL,CREATE_ALWAYS,FILE_ATTRIBUTE_NORMAL,NULL); 
if(hFile!=INVALID_HANDLE_VALUE) 

DWORD   dwRet=0; 
//填充文件头 
BITMAPFILEHEADER   bmfHeader; 
ZeroMemory(&bmfHeader,sizeof(bmfHeader)); 
bmfHeader.bfOffBits=sizeof(BITMAPFILEHEADER)+sizeof(BITMAPINFOHEADER); 
bmfHeader.bfSize=bi.bmiHeader.biSizeImage+bmfHeader.bfOffBits; 
bmfHeader.bfType= 'MB '; 
WriteFile(hFile,&bmfHeader,sizeof(bmfHeader),&dwRet,NULL); 
WriteFile(hFile,&bi.bmiHeader,sizeof(bi.bmiHeader),&dwRet,NULL); 
WriteFile(hFile,pBits,bi.bmiHeader.biSizeImage,&dwRet,NULL); 
CloseHandle(hFile); 



编译通过,运行后,图片格式打不开。不知道有什么问题。
还有,有没有其他的方法(适合vc6.0的)。
先谢谢诸位了!!
---华软 网友回答---
自己先顶个
---华软网友回复---
http://wenku.baidu.com/view/bcea128fa0116c175f0e4837.html
---华软网友回复---
谢谢啦      
华软声明:本内容来自网络,如有侵犯您版权请来信指出,本站立即删除。