MFC中CBitmap的簡單複製方法 (Copy CBitmap)

來源:互聯網
上載者:User

在這裡為大家提供一種CBitmap複製的方法

經過自己的一層封裝,就形成的非常好用的CBitmap的複製工具函數

先看函數實現:

 

 

 

  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));

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.