0

我正在使用 DirectShow.NET 库 [ http://directshownet.sourceforge.net/ ],我使用下面的代码来显示视频流。

videowindow.put_Owner(handle);
videowindow.put_WindowStyle(WindowStyle.Child | WindowStyle.ClipChildren);
videowindow.put_WindowState(DirectShowLib.WindowState.Show);

注意:句柄是 System.Windows.Forms.UserControl 句柄 [this->Handle]

问题是:

  • 在我的用户控件中,视频帧未正确显示:我看到一半的视频帧,另一半不在屏幕上。
  • 此外,当我缩放用户控件时,视频流帧也不会缩放。

这可能是什么原因?我该如何解决?

更新:

基于 Roman Answer 我添加了以下代码:

videoWindow.SetWindowPosition(this.ClientRectangle.Left,
                this.ClientRectangle.Top,
                this.ClientRectangle.Width,
                this.ClientRectangle.Height);

现在我可以在我的用户控制矩形中正确地看到视频帧......

4

1 回答 1

1

除了将视频渲染器的窗口作为子控件并提供窗口类型之外,您还应该设置IVideoWindow.SetWindowPosition. 当您的窗口布局发生变化时,您也有责任更新它。

于 2012-05-03T11:02:37.490 回答