VFW 最簡化的視頻捕獲並顯示(三)

前兩篇已經實現了視頻捕獲,顯示,控制顯示大小和速率

這一篇的目標是將捕獲的視頻放到一個矩形的窗口中顯示

1)在資源試圖中的Dialog中增加一個Picture Control 控件,設置該控件的屬性

狀態爲:帶邊框,有凹陷

類型爲:矩形

2)爲該控件添加變量 CStatic m_CapPicture

3)在Ctest1Dlg::OnInitDialog中增加如下代碼

CRect rc;
 m_CapPicture.GetClientRect(rc);
 m_CapPicture.MapWindowPoints(this,rc);

 m_hWndVideo = capCreateCaptureWindow(NULL,WS_POPUP,1,1,rc.Width(),rc.Height(),m_hWnd,0);
 if(capDriverConnect(m_hWndVideo,0))
 {
  ::SetParent(m_hWndVideo,*this);
  ::SetWindowLong(m_hWndVideo,GWL_STYLE,WS_CHILD);

  ::SetWindowPos(m_hWndVideo,NULL,rc.left,rc.top,rc.Width(),rc.Height(),SWP_NOZORDER);
  ::ShowWindow(m_hWndVideo,SW_SHOW);

  capGetVideoFormat(m_hWndVideo, &m_bmpinfo, sizeof(m_bmpinfo));

  m_bmpinfo.bmiHeader.biWidth = IMAGE_WIDTH;
  m_bmpinfo.bmiHeader.biHeight = IMAGE_HEIGHT;

  capSetVideoFormat(m_hWndVideo, &m_bmpinfo, sizeof(m_bmpinfo));
  capPreviewRate(m_hWndVideo,10);
  capPreview(m_hWndVideo,TRUE);
   }
 else
 {
    MessageBox(_T("Connection a capture driver error!"));
 }

4)測試運行,發現視頻在矩形中沒有按比例全部顯示出來

5)增加支持按比例顯示的語句

在上面的capPreview(m_hWndVideo,TRUE);語句後面再加一條
 

capPreviewScale(m_hWndVideo,TRUE);

 

總結:在本篇解決了在矩形圖片控件中顯示,並且按比例顯示

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章