0

現在、C#プロジェクトでLibVLCをセットアップしており、Panelを使用してビデオストリームを出力しています。WPFは、実装したいいくつかのGUIオプションに適しているため、プロジェクトをWPFに切り替えました。ただし、WPFコントロールにはC#コントロールのようなハンドルがないことに気付きました。

私はこれらを見つけました... http: //wpfmediakit.codeplex.com/ http://videorendererelement.codeplex.com

ただし、私はWPFを初めて使用し、実際にそれらを統合する方法がわかりません。WPFでLibVlCからビデオストリームを出力するための最良のアプローチは何でしょうか?

4

2 に答える 2

1

WindowsFormsHostコントロールを使用してこれを解決し、WinFormsアプリケーションで以前行っていたようにPanelを使用することができました。それでも、WPFにネイティブなものを使用することが望ましいようですが、今のところ、これは正常に機能しています。

于 2012-08-12T06:33:15.423 に答える
0

それは不可能だと思います...

ほとんどのWinFormsコントロールと同様に、WPFコントロールは舞台裏のWin32コントロール(MS固有のHWNDまたはより一般的なHANDLE)ではないため、レンダリングのためにlibvlcにHANDLEを提供することは不可能または容易ではありません。

こちらをご覧ください

画面上のすべてのWPF要素は、最終的にHWNDによってサポートされます。WPFウィンドウを作成すると、WPFはトップレベルのHWNDを作成し、HwndSourceを使用してウィンドウとそのWPFコンテンツをHWND内に配置します。アプリケーション内の残りのWPFコンテンツは、その単一のHWNDを共有します。例外は、メニュー、コンボボックスのドロップダウン、およびその他のポップアップです。これらの要素は、独自のトップレベルウィンドウを作成します。そのため、WPFメニューは、それを含むウィンドウHWNDの端を超える可能性があります。

ウィンドウを使用して、次のようにハンドルを取得しようとすることができます。

IntPtr windowHandle = new WindowInteropHelper(windowInstance).Handle

次に、このハンドルをlibvlcに渡します。ウィンドウのLoadedイベント内よりも早くこのハンドルを取得することを忘れないでください。ここを参照してください。

ただし、これにより、最上位のウィンドウコントロールの使用が制限されますが、これは希望どおりではないようです。

于 2012-08-12T06:38:08.433 に答える