VC++中图像处理类CBitmap的用法

2020-01-06 13:59:45王旭

 

  1. //-------------------在内存中建立区域以存放所得位图-------------------  // hBitmapSrc 为 CBitmap中保存的矩形原图资源句柄 
  2. // hDC 句柄    // 在内存中开辟位图资源,用以保存原图 
  3. HBITMAP CopyHBitmap(HBITMAP hBitmapSrc,HDC hDC)  { 
  4.       BITMAP bm; 
  5.   HBITMAP hBitmapDst;    HDC hdcSrc,hdcDst; 
  6.     GetObject(hBitmapSrc,sizeof(BITMAP),&bm); 
  7.   hBitmapDst=CreateCompatibleBitmap(hDC,bm.bmWidth,bm.bmHeight);   
  8.   hdcSrc=CreateCompatibleDC(hDC);    hdcDst=CreateCompatibleDC(hDC); 
  9.     SelectObject(hdcSrc,hBitmapSrc);  
  10.   SelectObject(hdcDst,hBitmapDst);   
  11.   BitBlt(hdcDst,0,0,bm.bmWidth,bm.bmHeight,hdcSrc,0,0,SRCCOPY);     
  12.   DeleteDC(hdcSrc);    DeleteDC(hdcDst);   
  13.   return hBitmapDst;   
?

下面给大家一个具体实例:将CBitmap类中的图像保存到文件
 

  1. // 使用下面的代码,可以把CBitmap类中的图像保存到图像文件中。支持格式:BMP、JPG、GIF和PNG。     
  2. void SaveBitmap(CString strFilePath, CBitmap Bitmap)  { 
  3.    if ( Bitmap.m_hObject )     { 
  4.       CImage imgTemp;   // CImage是MFC中的类。        imgTemp.Attach(Bitmap.operator HBITMAP()); 
  5.       imgTemp.Save(strFilePath);     } 
  6. }     
  7. // 注意文件路径名strFilePath必须包含后缀,即BMP、JPG、GIF或PNG中的一种。 
?

最后附上CBitmap,HBitmap,Bitmap区别及联系

加载一位图,可以使用LoadImage:

HANDLE LoadImage(HINSTANCE hinst,LPCTSTR lpszName,UINT uType,int cxDesired,int CyDesired,UINT fuLoad);