VLCを埋め込んだActiveXコントロールを含むWindowsFormsHostにボタンをオーバーレイしようとしています。私が抱えている問題は、activeXが常にwpfの上にあるということです。ActiveXコントロールに対してwpfコントロールを取得する方法はありますか?
VLCコントロールもビットマップへのレンダリングをサポートしていないようです。
私は最終的に解決策を見つけました。ポップアップ プリミティブは、常に最上位にあり、vlc コントロールの上に配置できる要素でもあります。ちょっとしたハックですが、必要なオーバーレイが得られます。プレーヤーの私のxamlは次のようになります
<grid>
<WindowsFormsHost x:Name="Host"
Height="200"
Width="200" />
<Border x:Name="Anchor"
Height="0"
Width="0"
HorizontalAlignment="Left"
VerticalAlignment="Top" />
<Popup Width="{Binding ElementName=Host,Path=Width}"
Height="{Binding ElementName=Host,Path=Height}"
PlacementTarget="{Binding ElementName=Anchor}"
AllowsTransparency="True"
IsOpen="True">
<Border Background="#30808080"
Width="{Binding ElementName=Host,Path=Width}"
Height="{Binding ElementName=Host,Path=Height}">
<Button Content="Start"
Height="20"
Width="60"
Click="button1_Click"/>
</Border>
</Popup>
</grid>
上記は、ボタンを含む vlc プレーヤーの上に明るい灰色の透明なレイヤーを配置します。上記は、ウィンドウがサイズ変更または移動されたかどうかを考慮していませんが、コントロールの上に wpf を配置するという問題は解決されています。
簡単な答え: いいえ。
MSDNから抽出:
WPF ユーザー インターフェイスでは、要素の z オーダーを変更してオーバーラップ動作を制御できます。ホストされた Windows フォーム コントロールは別の HWND で描画されるため、常に WPF 要素の上に描画されます。
VLC の場合、VideoLan.Net がhttp://vlcdotnet.codeplex.com/で入手できます。 これにより、ビデオを画像に出力できます。