上一節中講的是滾動條控件,本節主要講一種簡單實用的控件,圖片控件Picture Control。咱們能夠在界面某個位置放入圖片控件,顯示圖片以美化界面。在內容開始前有必要了解一下MFC相關控件。html
Xtreme Toolkit Pro:是屢獲殊榮的VC界面庫,是MFC開發中最全面界面控件套包,它提供了Windows開發所須要的11種主流的Visual C++ MFC控件,包括Command Bars、Controls、Chart Pro、Calendar、Docking Pane、Property Grid、Report Control、Shortcut Bar、Syntax Edit、Skin Framework 和Task Panel。編程
圖片控件簡介網站
圖片控件和前面講到的靜態文本框都是靜態文本控件,所以二者的使用方法有不少相同之處,所屬類都是CStatic類,有關成員函數已在前面介紹,這裏就不重複了。url
圖片控件靜態和動態加載圖片.net
下面爲你們演示如何爲圖片控件靜態和動態加載位圖圖片。code
1. 圖片控件靜態加載圖片htm
1)建立一個基於對話框的MFC工程,名稱設置爲「Example27」。對象
2)準備一張Bitmap圖片,名稱設爲「test.bmp」,放到工程的res文件夾中,res文件夾路徑爲...\Example27\Example27\res。這用的是一張雞啄米網站的截圖。圖片
3)在Resource View中的「Example27.rc*」節點上點右鍵,選擇「Add Resource...」,彈出「Add Resource」對話框:
而後在左側的「Resource Type」中選擇「Bitmap」,點按鈕「Import」,顯示一個文件對話框,咱們選擇res文件夾中的test.bmp圖片文件,導入成功後會在Resource View的Example27.rc*節點下出現一個新的子節點「Bitmap」,而在「Bitmap」節點下能夠看到剛添加的位圖資源IDB_BITMAP1,這裏的默認ID就不修改了。
4.)在自動生成的對話框模板IDD_EXAMPLE27_DIALOG中,刪除「TODO: Place dialog controls here.」靜態文本控件、「OK」按鈕和「Cancel」按鈕。添加一個Picture Control控件,在圖片控件的屬性頁中有一個Type屬性,Type屬性下拉列表中有8種類型,下面分別介紹下:
Frame:顯示一個無填充的矩形框,邊框顏色能夠經過Color屬性的下拉列表設定
Etched Horz:顯示一條橫分割線
Etched Vert:顯示一條豎分割線
Rectangle:顯示一個填充的矩形框,矩形顏色可經過Color屬性的下拉列表設定
Icon:顯示一個圖標(Icon),圖標經過Image 下拉列表來設置圖標資源ID
Bitmap:顯示一個位圖(Bitmap),位圖經過Image 下拉列表來設置位圖資源ID
Enhanced Metafile:顯示一個增強的元數據文件(Metafile)
Owner Draw:自繪
由於咱們要加載的是位圖圖片,因此Type屬性選擇Bitmap。
5)在圖片控件的Image屬性的下拉列表中選擇3)中導入的位圖IDB_BITMAP1。
6)編譯運行程序,彈出結果對話框,以下圖所示:
2. 圖片控件動態加載圖片
以上講的是靜態加載圖片的方法,下面接着講動態加載圖片的方法。程序依然沿用上面的工程。步驟以下:
1)將上面添加的圖片控件的Image屬性IDB_BITMAP1清空,Type屬性不變。
2)修改圖片控件的ID爲IDC_JIZHUOMI_STATIC,而後爲其添加CStatic類型控件變量m_jzmPicture。(若不修改ID則沒法爲其添加控件變量)
3)在對話框下方添加一按鈕控件,Caption屬性改成「加載圖片」,ID設爲IDC_LOAD_PIC_BUTTON。
4)爲按鈕IDC_LOAD_PIC_BUTTON添加點擊消息的處理函數CExample27Dlg::OnBnClickedLoadPicButton(),而後修改此函數的函數實現以下:
C++代碼
- void CExample27Dlg::OnBnClickedLoadPicButton()
- {
- // TODO: Add your control notification handler code here
- CBitmap bitmap; // CBitmap對象,用於加載位圖
- HBITMAP hBmp; // 保存CBitmap加載的位圖的句柄
- bitmap.LoadBitmap(IDB_BITMAP1); // 將位圖IDB_BITMAP1加載到bitmap
- hBmp = (HBITMAP)bitmap.GetSafeHandle(); // 獲取bitmap加載位圖的句柄
- m_jzmPicture.SetBitmap(hBmp); // 設置圖片控件m_jzmPicture的位圖圖片爲IDB_BITMAP1
- }
5)編譯運行程序,彈出結果對話框,點擊按鈕「加載圖片」,結果以下:
圖片控件Picture Control的內容就講到這裏了。應該說仍是比較簡單的。
轉載自:雞啄米