資源描述:
《MFC中icture控件顯示圖片.doc》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫。
1、PictureBox控件的主要作用是為用戶顯示圖片。實際顯示圖片由Picture屬性決定。Picture屬性包括被顯示的圖片的文件名(及可選的路徑名)。注意窗體對象也具有Picture屬性,通過設(shè)置該屬性可直接在窗體背景上顯示圖片。 要在運行時顯示或替換圖片,可利用函數(shù)LoadPicture來設(shè)置Picture屬性。提供圖片文件名和可選路徑名,由LoadPicture函數(shù)處理加載和顯示圖片的細節(jié)?! icMain.Picture=LoadPicture("VANGOGH.BMP") PictureBox控件具有AutoSize屬性,當
2、該屬性設(shè)置為True時,PictureBox能自動調(diào)整大小與顯示的圖片匹配。如果要用AutoSize屬性設(shè)置為True的PictureBox,設(shè)計窗體時就需要特別小心。圖片將不考慮窗體上的其它控件而調(diào)整大小,這可能導(dǎo)致意想不到的后果,如覆蓋其它控件。設(shè)計時應(yīng)通過加載每一幅圖片來檢查是否有這種現(xiàn)象發(fā)生?!cpicture控件的分類進行拉總結(jié),?(一)非動態(tài)顯示圖片(即圖片先通過資源管理器載入,有一個固定ID)(二)動態(tài)載入圖片(即只需要在程序中指定圖片的路徑即可載入)為方便說明,我們已經(jīng)建好一個基于對話框的工程,名為Ttest.對話框類為C
3、TestDlg(一)vcpicture控件非動態(tài)載入圖片.方法1.先從最簡單的開始,用picture控件來實現(xiàn).步驟:先在資源里Import一張圖片,ID為IDB_BITMAP2,然后在對話框上添加一個picture控件,右鍵點擊打開屬性,將type下拉框選擇BITMAP,緊跟著Image下面就出現(xiàn)一個下拉框,拉開就會看到所有已經(jīng)載入好的圖片,選擇你要的圖片.運行程序即可看到.方法2vcpicture控件.通過背景圖同樣如上,先載入一張圖片,ID為IDB_BITMAP2TestDlg.h中CBrushm_brBk;//在public中定義T
4、estDlg.cpp中在初始化函數(shù)OnInitDialog()中加入:BOOLCTestDlg::OnInitDialog(){CDialog::OnInitDialog();CBitmapbmp;bmp.LoadBitmap(IDB_BITMAP2);m_brBk.CreatePatternBrush(&bmp);bmp.DeleteObject();returnTRUE;//returnTRUEunlessyousetthefocustoacontrol}在打開類向?qū)?找到WM_CTLCOLOR消息,重載得對應(yīng)函數(shù)OnCtlColor(
5、),添加如下:HBRUSHCTestDlg::OnCtlColor(CDC*pDC,CWnd*pWnd,UINTnCtlColor){HBRUSHhbr=CDialog::OnCtlColor(pDC,pWnd,nCtlColor);if(pWnd==this){returnm_brBk;}returnhbr;}(二)vcpicture控件動態(tài)載入圖片.方法3圖像控件(本例用KoDak圖像編輯控件)1.首先應(yīng)該保證系統(tǒng)中有這個控件。注意,它不能單獨使用,必須和其他幾個控件(特別是Imgcmn.dll)一同使用。如果沒有,從別的機器上copy
6、過來即可。這幾個文件是Imgadmin.ocx,Imgcmn.dll,Imgedit.ocx,Imgscan.ocx,Imgshl.dll,Imgthumb.ocx,Imgutil.dll,把它們copy到windows/system目錄下,然后用regsvr32.exe將它們分別注冊。2.打開工程,進入資源管理器,在對話框上單擊右鍵,單擊InsertActivexcontrol…選擇Kodak圖象編輯控件,大小任意。3.在對話框上選中該控件,為其添加變量:m_ctrlPicture。。4.在BOOLCTestDlg::OnInitDial
7、og()添加如下:BOOLCTestDlg::OnInitDialog(){CDialog::OnInitDialog();m_ctrlPicture.SetImage("aa.jpg");//保證圖像在工程目錄下,也可以寫絕對路徑m_ctrlPicture.Display();returnTRUE;//returnTRUEunlessyousetthefocustoacontrol//EXCEPTION:OCXPropertyPagesshouldreturnFALSE}編譯運行就OK了,此種方法的好處就是可能針對多種圖像格式.方法4vc
8、picture控件通過CBitmap,HBITMAP,直接用OnPaint()繪制首先在CTestDlg類中聲明一個變量:CBitmapm_bmp;然后我們在對話框中加入一個pi