程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
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