(來源:http://hi.baidu.com/birdfly/blog/item/f18fb83e7e1dcefc828b13e3.html
)
首先選擇圖片:
void Chbgk_picDlg::OnBnClickedButton1()
{
CFileDialog
cfd(true,_T(".jpg"),NULL,OFN_FILEMUSTEXIST|OFN_HIDEREADONLY,_T("Executable
Files (*.jpg)|*.jpg|All Files (*.*)|*.*||"),this);
//選項圖片的約定
if(cfd.DoModal()!=IDOK) //判斷是否獲得圖片
{
return;
}
m_path = cfd.GetPathName(); //獲得圖片路徑
UpdateData(false); //更新路徑公開變數
Show_picture(); //調用顯示圖片函數
}
//顯示圖片函數
void Chbgk_picDlg::Show_picture()
{
if(m_path=="") //判斷圖片路徑是否存在
{
return;
}
//AfxMessageBox(_T("讀取到圖片路徑"));
CRect rect;
m_picture.GetClientRect(&rect); //m_picture為Picture Control控制項變數,獲得控制項的地區對象
CImage image; //使用圖片類
image.Load(m_path); //裝載路徑片資訊到圖片類
CDC* pDC = m_picture.GetWindowDC(); //獲得顯示控制項的DC
image.Draw( pDC -> m_hDC,rect); //圖片類的圖片繪製Draw函數
ReleaseDC(pDC);
}
通過上面兩步的實現可以顯示出jpg圖片資訊在
Picture Control控制項中,但是當視窗被最小化或者被其他應用程式覆蓋後,這個時候圖片不能顯示,那麼就需要對Picture
Control中圖片進行重繪,通過獲得WM_PAINT訊息進行處理,對響應OnPaint()函數進行處理:
void Chbgk_picDlg::OnPaint()
{
if (IsIconic())
{
..............
}
else
{
CDialog::OnPaint(); //重繪對話方塊
CDialog::UpdateWindow(); //更新windows視窗,如果無這步調用,圖片顯示還會出現問題
Show_picture(); //重繪圖片函數
}
}
需要注意的是首先繪製對話方塊,完成後更新視窗資訊,然後進行繪製控制項中圖片地區。
到這裡基本上一個圖片選擇顯示的應用程式已經出來了,細節問題再細節處理