MFC中CBitmap的简单复制方法 (Copy CBitmap)

本文介绍了一种简单实用的CBitmap复制方法,通过封装实现了高效的位图复制工具函数,并提供了具体的函数实现与调用示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在这里为大家提供一种CBitmap复制的方法

经过自己的一层封装,就形成的非常好用的CBitmap的复制工具函数

先看函数实现:

 

href="http://www.j2megame.org/wupei/plugins/plogeshi/styles/plogeshi.css" type="text/css" rel="stylesheet" />

 

  1. HBITMAP CMyDialog::CopyBitmap(HBITMAP hSourceHbitmap)
  2. {
  3.         CDC sourceDC;
  4.         CDC destDC;
  5.         sourceDC.CreateCompatibleDC(NULL);
  6.         destDC.CreateCompatibleDC(NULL);
  7.         //The bitmap information.
  8.         BITMAP bm = {0};
  9.         //Get the bitmap information.
  10.         ::GetObject(hSourceHbitmap, sizeof(bm), &bm);
  11.         // Create a bitmap to hold the result
  12.         HBITMAP hbmResult = ::CreateCompatibleBitmap(CClientDC(NULL), bm.bmWidth, bm.bmHeight);
  13.  
  14.         HBITMAP hbmOldSource = (HBITMAP)::SelectObject(sourceDC.m_hDC, hSourceHbitmap);
  15.         HBITMAP hbmOldDest = (HBITMAP)::SelectObject(destDC.m_hDC, hbmResult);
  16.         destDC.BitBlt(0, 0, bm.bmWidth, bm.bmHeight, &sourceDC, 0, 0, SRCCOPY );
  17.  
  18.         // Restore DCs
  19.         ::SelectObject(sourceDC.m_hDC, hbmOldSource);
  20.         ::SelectObject(destDC.m_hDC, hbmOldDest);
  21.         ::DeleteObject(sourceDC.m_hDC);
  22.         ::DeleteObject(destDC.m_hDC);
  23.  
  24.         return hbmResult;
  25. }

 

接下来函数调用:

 

  1. //这样简单的操作就可以实现CBitmap的复制
  2. CBitmap CpyBitmap;
  3. //返回值可以检测是否图片拷贝成功
  4. CpyBitmap->Attach(CopyBitmap(SrcBitmap));

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值