VC++ Picture Control中顯示jpg圖片

來源:互聯網
上載者:User

(來源: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();     //重繪圖片函數

}

}

需要注意的是首先繪製對話方塊,完成後更新視窗資訊,然後進行繪製控制項中圖片地區。

到這裡基本上一個圖片選擇顯示的應用程式已經出來了,細節問題再細節處理

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.