首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> VC >> 關於VC++

MFC 繪圖基礎:載入並顯示位圖完整流程

     編輯:關於VC++

位圖顯示三步驟

  1. 使用 LoadImage 載入位圖檔案至 CBitmap
  2. 建立記憶體 DC 並將位圖選入
  3. 以 BitBlt 將記憶體 DC 內容複製至目標 DC

關鍵 API:LoadImage

HANDLE LoadImage(
    HINSTANCE hinst,      // 資源模組句柄,檔案載入時為 NULL
    LPCTSTR lpszName,     // 檔案路徑或資源名稱
    UINT uType,           // IMAGE_BITMAP / IMAGE_CURSOR / IMAGE_ICON
    int cxDesired,        // 寬度(像素)
    int cyDesired,        // 高度
    UINT fuLoad           // LR_LOADFROMFILE 等載入旗標
);

完整範例程式碼

CClientDC dc(this);           // 視窗客戶區 DC
CDC* pMemDC = new CDC;
pMemDC->CreateCompatibleDC(&dc); // 建立相容記憶體 DC

CBitmap bitmap;
bitmap.m_hObject = (HBITMAP)::LoadImage(nullptr, L"b1.bmp",
    IMAGE_BITMAP, 500, 400, LR_LOADFROMFILE);

pMemDC->SelectObject(&bitmap);  // 選入位圖

CRect rect;
GetClientRect(&rect);
dc.BitBlt(0, 0, rect.right, rect.bottom, pMemDC, 0, 0, SRCCOPY);

delete pMemDC; // 記得釋放記憶體 DC

注意事項

  • CDC 無複製建構子,不可直接賦值(mdc = dc 錯誤)
  • CBitmap::m_hObject 底層為 HBITMAP,需手動附加
  • 記憶體 DC 需手動 delete,或改用棧上物件自動釋放
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved