VCPicture控件的加載圖像的使用總結(jié)_第1頁
VCPicture控件的加載圖像的使用總結(jié)_第2頁
VCPicture控件的加載圖像的使用總結(jié)_第3頁
VCPicture控件的加載圖像的使用總結(jié)_第4頁
全文預(yù)覽已結(jié)束

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、VCPicture控件的加載圖像的使用總結(jié)非動(dòng)態(tài)顯示圖片(即圖片先通過資源管理器載入,有一個(gè)固定ID)動(dòng)態(tài)載入圖片(即只需要在程序中指定圖片的路徑即可載入)為方便說明,我們已經(jīng)建好一個(gè)基于對話框的工程,名為Ttest,對話框類為CTestDlg(一)vcpicturef空件非動(dòng)態(tài)載入圖片方法1先從最簡單的開始用picture控件來實(shí)現(xiàn)步驟:先在資源里Import張圖片,ID為IDB_BITMAP2,然后在對話框上添加一個(gè)picture控件,右鍵點(diǎn)擊打開屬性將type下拉框選擇BITMAP,緊跟著下面就出現(xiàn)一個(gè)Image下拉框,拉開就會(huì)看到所有已經(jīng)載入好的圖片,選擇你要的圖片.運(yùn)行程序即可看到.

2、方法2.vcpicture控件通過背景圖同樣如上,先載入一張圖片,ID為IDB_BITMAP2TestDlg.h中CBrushm_brBk;/在public中定義TestDlg.cpp中在初始化函數(shù)OnInitDialog()中加入:BOOLCTestDlg:OnInitDialog()CDialog:OnInitDialog();CBitmapbmp;bmp.LoadBitmap(IDB_BITMAP2);m_brBk.CreatePatternBrush(&bmp);bmp.DeleteObject();returnTRUE;/returnTRUEunlessyousetthefocust

3、oacontrol在打開類向?qū)?,找到WM_CTLCOLOR消息,重載得對應(yīng)函數(shù)OnCtlColor(),添加如下:HBRUSHCTestDlg:OnCtlColor(CDC*pDC,CWnd*pWnd,UINTnCtlColor)HBRUSHhbr=CDialog:OnCtlColor(pDC,pWnd,nCtlColor);if(pWnd=this)returnm_brBk;returnhbr;(二)vcpicture控件動(dòng)態(tài)載入圖片.方法3.圖像控件(本例用KoDak圖像編輯控件)1.首先應(yīng)該保證系統(tǒng)中有這個(gè)控件。注意,它不能單獨(dú)使用,必須和其他幾個(gè)控件(特別是Imgcmn.dll)同使用

4、。如果沒有,從別的機(jī)器上copy過來即可。這幾個(gè)文件是Imgadmin.ocx,Imgcmn.dll,Imgedit.ocx,Imgscan.ocx,Imgshl.dll,Imgthumb.ocx,Imgutil.dll,把它們copy到windowssystem目錄下,然后用regsvr32.exe將它們分別注冊。2.打開工程,進(jìn)入資源管理器,在對話框上單擊右鍵,單擊InsertActivexcontrol選擇Kodak圖象編輯控件,大小任意。在對話框上選中該控件,為其添加變量:m_ctrlPicture。在BOOLCTestDlg:OnInitDialogO添加如下:BOOLCTestDl

5、g:OnInitDialog()CDialog:OnInitDialog();m_ctrlPicture.SetImage(aa.jpg);/保證圖像在工程目錄下,也可以寫絕對路徑m_ctrlPicture.Display();returnTRUE;/returnTRUEunlessyousetthefocustoacontrol/EXCEPTION:OCXPropertyPagesshouldreturnFALSE編譯運(yùn)行就OK了,此種方法的好處就是可能針對多種圖像格式.方法4.vcpicture控件通過CBitmap,HBITMAP,直接用OnPaint()繪制首先在CTestDlg類中聲

6、明一個(gè)變量:CBitmapm_bmp;然后我們在對話框中加入一個(gè)picture標(biāo)簽,名為IDC_STATIC1,然后:BOOLCDisplayPic:OnInitDialog()CDialog:OnInitDialog();if(m_bmp.m_hObject!=NULL)/判斷m_bmp.DeleteObject();/載入圖片HBITMAPhbmp=(HBITMAP):LoadImage(AfxGetInstanceHandle(),c:aaa.bmp,IMAGE_BITMAP,0,0,LR_CREATEDIBSECTION|LR_LOADFROMFILE);if(hbmp=NULL)re

7、turnFALSE;/該斷程序用來取得加載的BMP的信息/m_bmp.Attach(hbmp);DIBSECTIONds;BITMAPINFOHEADER&bminfo=ds.dsBmih;m_bmp.GetObject(sizeof(ds),&ds);intcx=bminfo.biWidth;/得到圖像寬度intcy=bminfo.biHeight;/得到圖像高度/得到了圖像的寬度和高度后,我們就可以對圖像大小進(jìn)行適應(yīng),/即調(diào)整控件的大小,讓它正好顯示一張圖片/CRectrect;GetDlgItem(IDC_STATIC1)-GetWindowRect(&rect);ScreenToCli

8、ent(&rect);GetDlgItem(IDC_STATIC1)-MoveWindow(rect.left,rect.top,cx,cy,true);/調(diào)整大小returnTRUE;/returnTRUEunlessyousetthefocustoacontrol/EXCEPTION:OCXPropertyPagesshouldreturnFALSE圖片加載成功了,標(biāo)簽大小也適應(yīng)了,下面就是繪制繪制圖像了,打開類向?qū)?重載WM_PAINT消息voidCDisplayPic:OnPaint()/以下三種情況任選一種會(huì)是不同效果(只能一種存在)/CPaintDCdc(this);/若用此句,得

9、到的是對話框的DC,圖片將被繪制在對話框上.CPaintDCdc(GetDlgltem(IDC_STATICl);/用此句,得到picture控件的DC,圖像將被繪制在控件上/CDCdc;/dc.m_hDC=:GetDC(NULL);/若用此兩句,得到的是屏幕的DC,圖片將被繪制在屏幕上/CRectrcclient;GetDlgItem(IDC_STATIC1)-GetClientRect(&rcclient);CDCmemdc;memdc.CreateCompatibleDC(&dc);CBitmapbitmap;bitmap.CreateCompatibleBitmap(&dc,rccli

10、ent.Width(),rcclient.Height();memdc.SelectObject(&bitmap);CWnd:DefWindowProc(WM_PAINT,(WPARAM)memdc.m_hDC,0);CDCmaskdc;maskdc.CreateCompatibleDC(&dc);CBitmapmaskbitmap;maskbitmap.CreateBitmap(rcclient.Width(),rcclient.Height(),1,1,NULL);maskdc.SelectObject(&maskbitmap);maskdc.BitBlt(0,0,rcclient.Width(),rcclient.Height(),&memdc,rcclient.left,rcclient.top,SRCCOPY);CBrushbrush;brush.CreatePatternBrush(&m_bmp);dc.FillRect(rcclient,&brush);dc.BitBlt(rcclient.left,rcclient.top,rcclient.W

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論