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

さらに、ビデオ レンダラーのウィンドウを子コントロールとして配置し、ウィンドウの stypes を提供するために、 を設定する必要がありますIVideoWindow.SetWindowPosition。また、ウィンドウのレイアウトが変更されたときに更新する責任もあります。

于 2012-05-03T11:02:37.490 に答える