HBITMAP的复制,拷贝 与 CBitmap的复制,拷贝

原创 2007年10月12日 09:35:00

HBITMAP  Cxxx::CopyBitmap(HBITMAP  hSourcehBitmap )
{
 CDC sourcedc;
 CDC destdc;
 sourcedc.CreateCompatibleDC(NULL);
 destdc.CreateCompatibleDC(NULL);
 //the   bitmap   information.
 BITMAP   bm = {0};
 //get   the   bitmap   information.
 ::GetObject(hSourcehBitmap,   sizeof(bm),   &bm);
 //   create   a   bitmap   to   hold   the   result
 HBITMAP   hbmresult   =   ::CreateCompatibleBitmap(CClientDC(NULL),   bm.bmWidth ,   bm.bmHeight );
 HBITMAP   hbmoldsource   =   (HBITMAP)::SelectObject(   sourcedc.m_hDC ,   hSourcehBitmap);
 HBITMAP   hbmolddest   =   (HBITMAP)::SelectObject(   destdc.m_hDC ,   hbmresult   );
 destdc.BitBlt(0,0,bm.bmWidth ,   bm.bmHeight ,   &sourcedc,   0,   0,   SRCCOPY   );

 //   restore   dcs
 ::SelectObject(  sourcedc.m_hDC ,   hbmoldsource   );
 ::SelectObject(  destdc.m_hDC ,   hbmolddest   );
 ::DeleteObject(  sourcedc.m_hDC );
 ::DeleteObject(  destdc.m_hDC );

 return   hbmresult;
}

 

========================================================

========================================================

在网上找了好一镇子,大部分都是说用临时CDC,Bitblt来拷贝

这个方法简单点,就是先把CBitmap强制转换到HBITMAP后再Attach()

void Cxxx::CopyBitmap(CBitmap* hSourceBitmap, CBitmap* hDescBitmap)
{
 HBITMAP HBM=(HBITMAP)hSourceBitmap->m_hObject;

 //HBITMAP HBM=(HBITMAP)hSourceBitmap->Detach();//如果希望清除掉原图资源
 //hDescBitmap = new CBitmap;


 hDescBitmap->Attach(HBM);
}
 

Bitmap的复制和注意

Bitmap是不能通过“ A = B ”来传递的,这样只是把B的引用给了A而已 之前做截图的时候就遇到过这个问题,但是没注意,想把截图获得的bitmap给ImageView显示,然后回收。发现报错后...
  • qq_31391977
  • qq_31391977
  • 2017-11-30 16:05:41
  • 503

怎么把指定dc的指定区域保存成HBITMAP,以及怎么把HBITMAP保存成位图

HBITMAP CopyDCToBitmap(HDC hScrDC, LPRECT lpRect){if(hScrDC==NULL || lpRect==NULL || IsRectEmpty(lpR...
  • bobob
  • bobob
  • 2005-02-20 15:21:00
  • 10160

HBITMAP与BITMAP 的区别 BMP图像的格式

HBITMAP   是句柄;   BITMAP    是实例:     typedef   struct   tagBITMAP   {              LONG       b...
  • hnust_xiehonghao
  • hnust_xiehonghao
  • 2014-07-10 14:49:20
  • 16638

HBitmap、Bitmap、CBitmap之间的区别与联系

一、术语的定义及含义: HANDLE :      是DIB的文件句柄,是表示了设备无关位图在内存中的区域存储代号,该句柄值是整数.是整个Windows编程的基础。一个句柄是指使用的一个唯一的整数...
  • self_mind
  • self_mind
  • 2016-02-21 11:18:49
  • 1598

3. GDI+ Bitmap和GDI HBITMAP互转

本文详细的讲解了带透明度的HBITMAP和Bitmap的转换,解决常见的Bitmap转HBITMAP背景变浅,HBITMAP转Bitmap背景变黑的问题,并演示了如何输出HBITMAP和Bitmap的...
  • wenzhou1219
  • wenzhou1219
  • 2017-10-21 15:05:35
  • 1201

C++将HBITMAP保存为bmp图片

BOOL CBMP2ArrayMultiplyDlg::SaveBitmapToFile(HBITMAP hBitmap, CString szfilename) { HDC hDC; ...
  • shufac
  • shufac
  • 2015-11-23 17:02:39
  • 4131

C++中Cbitmap,HBitmap,Bitmap的区别及联系

加载一位图,可以使用LoadImage: HANDLE LoadImage(HINSTANCE hinst,LPCTSTR lpszName,UINT uType,int cxDesired,int...
  • zxccaoya
  • zxccaoya
  • 2017-01-10 15:53:01
  • 1496

区分BITMAP、CBitmap和HBITMAP

1. BITMAP BITMAP是一个结构体,封装着bitmap的一些信息。定义了逻辑位图的宽高、颜色格式和位值。 2. CBitmap CBitmap是MFC中封装bitmap的类,包含着被位图的...
  • mowenliunian
  • mowenliunian
  • 2016-10-29 22:33:22
  • 619

由RGB数据创建HBITMAP

 久离VC现场,感觉手有点生疏,应了一句话“武功珍藏是要贬值的”,何况现在又是牛气冲天。在开发中要用到编个录像功能,需要由RGB数据创建HBITMAP,试了几个函数,CreateBitmap,Crea...
  • guosenjuncs
  • guosenjuncs
  • 2007-06-20 13:31:00
  • 2419

CBitmap和HBITMAP的区别及相互转换方法

hbitmap是bitmap的指针, msdn中: Handle to a bitmap.typedef HANDLE HBITMAP; cbitmap是mfc中封装bitmap的类...
  • qq_23992597
  • qq_23992597
  • 2016-05-20 17:24:35
  • 1351
收藏助手
不良信息举报
您举报文章:HBITMAP的复制,拷贝 与 CBitmap的复制,拷贝
举报原因:
原因补充:

(最多只允许输入30个字)