0

我正在使用IVMRWindowlessControl9ie WindowlessControlw/播放视频VMR-9。当我最初设置视频时遇到困难时,我注意到网上找到的许多示例在 Window 的 Paint 处理程序中都有这段代码:

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

我的视频可以正常播放,但我没有上面的代码。上面的代码有什么作用,使用它有什么意义吗?

4

2 回答 2

1

至于它的作用:

  • 如果使用目标颜色键绘制视频,则它将键颜色绘制到目标窗口中。

  • 如果图像是信箱的,或者它的一部分落在另一台显示器上,它将绘制图像未覆盖的部分。

因此,如果这些事情都不适用,您可能根本看不到任何区别。

于 2013-04-21T11:15:56.383 回答
1

在大多数情况下,您不需要显式地重新绘制视频,因为视频渲染器会自动完成。是的,如果托管窗口需要 - 出于任何原因 - 请求强制重新申请,例如作为WM_PAINT窗口消息处理程序的一部分,那么RepaintVideo方法就在这里为您服务。

在 MSDN、VMR 无窗口模式上查看更多信息:

在播放期间,应用程序应通知 VMR 以下 Windows 消息:

WM_PAINT:调用 IVMRWindowlessControl::RepaintVideo 重新绘制图像。

于 2013-04-14T22:39:37.440 回答