2

wpf で aforge:videosourceplayer を使用していますが、問題があるのは、wpf で aforge:VideoSourcePlayer を使用するには、それを WindowsFormsHost タグに配置する必要があることです。WindowsFormsHost を使用したくない場合、別の選択肢はありますか?

<WindowsFormsHost Margin="5,5,5,201" Name="windowFormsHost" Panel.ZIndex="0">
       <aforge:VideoSourcePlayer x:Name="videoSourcePlayer" Height="200"  Margin="12,30,0,0" Width="360">
</aforge:VideoSourcePlayer>

どんな助けでも感謝します、ありがとう。

4

2 に答える 2

4

残念ながら、WinForms 要素は WPF 要素とは異なる方法で描画されるため、別の hWND 内に配置する必要があるため、そうではありません (以下のリンクを参照)。

あなたはそれを求めていませんでしたが、WPF ウィンドウ内で WinForms を使用しているときに空域の問題が発生したため、代替手段を探していると思います。

.NET 4 以前を使用している場合、上記のコードで割り当てた ZIndex プロパティは無視されます;-)、WPF ウィンドウ内の WinForm 要素は、常に他のすべての上に描画されます (詳細については、こちらを参照してください: WindowsFormsHost 要素のレイアウトに関する考慮事項)。

そのため、最終的に独自のプレーヤーを作成しました。WinForm 要素をレイアウトしようとするのは非常に不安でした (スクロール機能が必要であり、WinFormEl を部分的に非表示にする簡単な方法を見つけることができませんでした。とりあえず)。

.NET 4.5 を使用している場合は、ZIndex (およびその他のレイアウト プロパティ) をもう少し細かく制御できます。ここで読むことができます(上記と同じ記事ですが、.NET 4.5 用です)。

注: isRedirected&CompositionMode プロパティ (上記のリンクで述べたように、WPF 内で WinForms を適切にレイアウトできるようにするために必要なプロパティ) が 4.5 リリースから除外されているが見つからないというブログ投稿を読んだことを覚えています。これに関する公式声明(最も安全な方法は、試してみることです:-))。

于 2012-09-28T10:28:44.463 に答える
1

私はまったく同じ問題を抱えていました。あなたは Aforge Framework が好きですが、WindowsFormsHost は好きではありません。最終的にここで解決策を見つけました。

http://seaflection.wordpress.com/2012/01/29/getting-image-stream-using-webcam-in-wpf-asynchronous-ui-updating/

Sagar Mohite は、ビットマップを VideoSourcePlayers ではなく Image 要素で表現できるように、ビットマップを正しい形式に変換できるようにする Compatability.dll を作成するだけで、この問題を解決しました。DispatcherObject も必要ですが、必要な少量のコードはすべてリンクにあります + dll をダウンロードすると、Aforge ビデオ フィードで WPF コントロールのオーバーレイを開始できます。

于 2013-01-30T15:46:16.383 に答える