前兩篇已經實現了視頻捕獲,顯示,控制顯示大小和速率
這一篇的目標是將捕獲的視頻放到一個矩形的窗口中顯示
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);
總結:在本篇解決了在矩形圖片控件中顯示,並且按比例顯示