2013-04-14 38 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,或其一部分落在另一个显示器上,它将绘制图像未覆盖的部分。

因此,如果没有这些东西适用,您可能会看不到任何区别。