picture控件顯示圖片_第1頁
picture控件顯示圖片_第2頁
picture控件顯示圖片_第3頁
picture控件顯示圖片_第4頁
免費預覽已結束,剩余1頁可下載查看

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、picture控件顯示圖片vc picture控件的分類進行拉總結,(一) 非動態顯示圖片(即圖片先通過資源管理器載入,有一個固定ID)(二) 動態載入圖片(即只需要在程序中指定圖片的路徑即可載入)為方便說明,我們已經建好一個基于對話框的工程,名為Ttest.對話框類為CTestDlg(一) vc picture控件非動態載入圖片.方法1.先從最簡單的開始,用picture 控件來實現.步驟:先在資源里Import一張圖片,ID為IDB_BITMAP2然后在對話框上添加一個picture控件,右鍵點擊打開屬性,將type下拉框選擇BITMAP,緊跟著下面就出現一個Image下拉框,拉開就會看到

2、所有已經載入好的圖片,選擇你要的圖片.運行程序即可看到.方法2vc picture控件.通過背景圖同樣如上,先載入一張圖片,ID為IDB_BITMAP2TestDlg.h中CBrush m_brBk;/在public中定義TestDlg.cpp中在初始化函數OnInitDialog()中加入:BOOL CTestDlg:OnInitDialog()CDialog:OnInitDialog();CBitmap bmp;bmp.LoadBitmap(IDB_BITMAP2);m_brBk.CreatePatternBrush(&bmp);bmp.DeleteObject();return

3、TRUE; / return TRUE unless you set the focus to a control在打開類向導,找到WM_CTLCOLOR消息,重載得對應函數OnCtlColor(),添加如下:HBRUSH CTestDlg:OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)HBRUSH hbr = CDialog:OnCtlColor(pDC, pWnd, nCtlColor);if (pWnd = this)return m_brBk;return hbr;(二) vc picture控件動態載入圖片.方法3 圖像控件(本例用K

4、oDak 圖像編輯控件)1. 首先應該保證系統中有這個控件。注意,它不能單獨使用,必須和其他幾個控件(特別是Imgcmn.dll) 一同使用。如果沒有,從別的機器上copy過來即可。這幾個文件是Imgadmin.ocx,Imgcmn.dll,Imgedit.ocx,Imgscan.ocx,Imgshl.dll,Imgthumb.ocx,Imgutil.dll,把它們copy到windowssystem目錄下,然后用 regsvr32.exe將它們分別注冊。2. 打開工程,進入資源管理器,在對話框上單擊右鍵,單擊Insert Activex control 選擇Kodak圖象編輯控件,大小任意。

5、3. 在對話框上選中該控件,為其添加變量:m_ctrlPicture。4. 在BOOL CTestDlg:OnInitDialog()添加如下:BOOL CTestDlg:OnInitDialog()CDialog:OnInitDialog();m_ctrlPicture.SetImage("aa.jpg"); /保證圖像在工程目錄下,也可以寫絕對路徑m_ctrlPicture.Display();return TRUE; / return TRUE unless you set the focus to a control/ EXCEPTION: OCX Property

6、 Pages should return FALSE編譯運行就OK了,此種方法的好處就是可能針對多種圖像格式.方法4 vc picture控件通過CBitmap,HBITMAP,直接用OnPaint()繪制首先在CTestDlg類中聲明一個變量: CBitmap m_bmp;然后我們在對話框中加入一個picture 標簽,名為IDC_STATIC1然后:BOOL CDisplayPic:OnInitDialog()CDialog:OnInitDialog();if( m_bmp.m_hObject != NULL )/判斷m_bmp.DeleteObject();/載入圖片HBITMAP hb

7、mp = (HBITMAP):LoadImage(AfxGetInstanceHandle(),"c:aaa.bmp", IMAGE_BITMAP, 0, 0, LR_CREATEDIBSECTION|LR_LOADFROMFILE);if( hbmp = NULL )return FALSE;/該斷程序用來取得加載的BMP的信息/m_bmp.Attach( hbmp );DIBSECTION ds;BITMAPINFOHEADER &bminfo = ds.dsBmih;m_bmp.GetObject( sizeof(ds), &ds );int cx=b

8、minfo.biWidth; /得到圖像寬度int cy=bminfo.biHeight; /得到圖像高度/ /得到了圖像的寬度和高度后,我們就可以對圖像大小進行適應,即調整控件的大小,讓它正好顯示一張圖片/CRect rect;GetDlgItem(IDC_STATIC1)->GetWindowRect(&rect);ScreenToClient(&rect);GetDlgItem(IDC_STATIC1)->MoveWindow(rect.left,rect.top,cx,cy,true);/調整大小return TRUE; / return TRUE unle

9、ss you set the focus to a control/ EXCEPTION: OCX Property Pages should return FALSE圖片加載成功了,標簽大小也適應了,下面就是繪制繪制圖像了,打開類向導,重載WM_PAINT消息void CDisplayPic:OnPaint()/以下三種情況任選一種會是不同效果(只能一種存在)/CPaintDC dc(this); /若用此句,得到的是對話框的DC,圖片將被繪制在對話框上.CPaintDC dc(GetDlgItem(IDC_STATIC1); /用此句,得到picture控件的DC,圖像將被繪制在控件上/

10、CDC dc;/ dc.m_hDC=:GetDC(NULL); /若用此兩句,得到的是屏幕的DC,圖片將被繪制在屏幕上/CRect rcclient;GetDlgItem(IDC_STATIC1)->GetClientRect(&rcclient);CDC memdc;memdc.CreateCompatibleDC(&dc);CBitmap bitmap;bitmap.CreateCompatibleBitmap(&dc, rcclient.Width(), rcclient.Height();memdc.SelectObject( &bitmap );

11、CWnd:DefWindowProc(WM_PAINT, (WPARAM)memdc.m_hDC , 0);CDC maskdc;maskdc.CreateCompatibleDC(&dc);CBitmap maskbitmap;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);CBrush brush;brush.CreatePatternBrush(&m_bmp);dc.FillRect(rcclient, &brush);dc.BitBlt(rcclient.left, rcclient.top, rcclient.Wid

溫馨提示

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

評論

0/150

提交評論