程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> VC >> vc教程 >> MFC繪圖7--顯示位圖

MFC繪圖7--顯示位圖

編輯:vc教程

  1、將位圖加載到內存DC中

  2、將內存DC中的內容繪制到要顯示位圖的DC中

  *MFC中沒有直接用來加載位圖的函數,可以使用WindowsAPI中的

  LoadImage函數來加載位圖,其原型如下:

  

HANDLE LoadImage(
HINSTANCE hinst, //位圖實體句柄,若位圖在硬盤或者資源文件
//中,則將該參數設為NULL
LPCTSTR lpszName, //位圖所在路徑及文件名,或者資源名稱
UINT uType, //加載位圖的類型:
//1、IMAGE_BITMAP
//2、IMAGE_CURSOR
//3、IMAGE_ICON
int cxDesired, //位圖寬度,像素
int cyDesired, //位圖高度,像素
UINT fuLoad //加載方式比如LR_LOADFROMFILE等
);

  步驟:

  CClientDC dc(this);

  CDC *mdc=new CDC;

  //CDC只有空構造函數,也就是說無法通過拷貝函數來構造一個

  //與dc相同的mdc,即mdc=dc非法。

  //CreateCompatibleDC建立一個適合指定pDC的內存設備上下文

  mdc->CreateCompatibleDC(&dc);

  CBitmap bitmap;

  //CBitmap繼承自CGdiObject

  //其成員變量m_hObject是一個句柄

  //A HANDLE containing the HBITMAP, HPALETTE, HRGN, HBRUSH, HPEN, or HFONT

  //attached to this object.

  //可以簡單記為bitmap擁有HBITMAP類型句柄m_hObject,而該句柄需要使用

  //Windows API的LoadImage獲得

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

  mdc->SelectObject(bitmap);

  CRect rect;

  //取得客戶區域大小

  GetClientRect(&rect);

  //BitBlt()將位圖貼到要顯示的DC

  dc.BitBlt(0,0,rect.right,rect.bottom,mdc,0,0,SRCCOPY);

  //最後要記得在析構函數中釋放mdc

  delete mdc

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved