2013-04-14 67 views
0

我在播放視頻時使用了IVMRWindowlessControl9,即WindowlessControl w/VMR-9。當我最初有難度設置視頻的時候,我注意到網上找到在窗口的油漆處理過這樣的一段代碼例子很多:爲什麼使用DirectShow(.NET)重新繪製無窗口控件?

IntPtr hdc = e.Graphics.GetHdc(); 
int hr = 0; 
hr = windowlessCtrl.RepaintVideo(this.Handle, hdc); 
e.Graphics.ReleaseHdc(hdc); 

我的視頻播放正確但我沒有上面的代碼。上面的代碼是做什麼的,它在使用它有什麼意義?

回答

1

在大多數情況下,您不需要明確重新制作視頻,因爲視頻渲染器會自動執行此操作。是的,如果託管窗口需要 - 出於任何原因 - 要求強制重新輸入,例如作爲WM_PAINT窗口消息處理程序的一部分,那麼RepaintVideo方法就在您的服務中。

查看更多MSDN上,VMR Windowless Mode

在播放過程中,應用程序應該通知 以下Windows消息的VMR:

WM_PAINT:呼叫IVMRWindowlessControl :: RepaintVideo重新繪製 圖像。

1

至於它做什麼:

  • 如果正在使用目標顏色鍵繪製的視頻,然後將它描繪的關鍵色彩到目的窗口。

  • 如果圖像是letterbox,或其一部分落在另一個顯示器上,它將繪製圖像未覆蓋的部分。

因此,如果沒有這些東西適用,您可能會看不到任何區別。