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);
これで、ユーザーコントロールの長方形にビデオフレームが正しく表示されるようになりました。