VC++中bmp圖象的顯示

前段時間想用VC的對話框來動態地顯示一副BMP位圖,查了很多篇文章發現都寫的很複雜(而且貌似許多都是複製粘貼而來),真正有價值的不多.其實VC顯示BMP文件是很方便的,所有的代碼加在一起也不過五六行而已.因而特此將自己的經驗寫上blog,希望能對需要的人有所幫助. 要想在VC中動態顯示位圖,有兩種比較簡單的方法:

1.顯示已添加爲爲工程資源的位圖

準備工作:把圖片加爲工程的資源,設其句柄名爲IDB_BITMAP1;然後放一個靜態控件或者圖片控件到對話框上,將其句柄名設爲IDC_SHOWBMP;

具體代碼:在需要使用的地方(如按鈕函數或OnInitDialog()或OnPaint()裏等等)加入如下代碼:

CStatic *p =(CStatic *)GetDlgItem(IDC_SHOWBMP); //獲得指向IDC_SHOWBMP的指針,並將其強制轉換爲CStatic*類型,並賦值給p

HBITMAP hBitmap=::LoadBitmap(AfxGetResourceHandle(),MAKEINTRESOURCE(IDB_BITMAP1));//從工程資源處獲得IDB_BITMAP1的位圖句柄,並將其賦值給hBitmap變量

p->Modifystyle(0xF,SS_BITMAP|SS_CENTERIMAGE); //設置該靜態控件(p指向的靜態控件),使其用於顯示位圖,並且是在控件中央顯 //(若無此步無法顯示,因爲沒有說明靜態對話框要顯示的類型是什麼)   

p->SetBitmap(hBitmap); //將需要顯示的位圖設置爲bBitmap,即資源IDB_BITMAP1的句柄  

  

2.通過位圖所在路徑顯示位圖(此方法無需事先將位圖文件添加爲該工程的資源)

準備工作:在對話框上放一個靜態控件(一定是靜態控件,若圖片控件則無法顯示) 將其重命名爲IDC_BMP(不重命名的話無法添加變量),然後再爲該控件添加一個變量,命名爲m_image.

具體代碼:在需要使用的地方(如按鈕函數或OnInitDialog()或OnPaint()裏等等)加入如下代碼:

this->m_image.ModifyStyle(0,SS_BITMAP | SS_CENTERIMAGE);   //和上面的作用一樣,將該靜態控件設置爲是用來顯示位圖的,只不過這裏是通過該靜態對話框的變量來進行modifystyle操作的

HBITMAP hBmp = (HBITMAP)::LoadImage(0, "path\\1.bmp", IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE);//從bmp文件所在的路徑直接讀取該bmp圖象的句柄,並將其轉換爲HBITMAP類型//注:其中的"path\\1.bmp"是相對路徑,即在和可執行文件的同一目錄下有一個名爲path的文件夾,裏面有一個名爲1.bmp的位圖文件. 

this->m_image.SetBitmap(hBmp); //通過變量m_image來設置該靜態框所顯示的位圖文件. 

以上兩種方法經過試驗都可以成功的在對話框上顯示一個bmp位圖,而且還可以根據其資源號或者具體路徑來進行具體的操作.

發佈了4 篇原創文章 · 獲贊 4 · 訪問量 10萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章