有我的代码。我看到右上角的视频,控件本身位于此处,但主网格背景为空。它应该通过VisualBrush拍摄视频,对吧?我搜索了几个样本并且他们都使用相同的技巧,但它不起作用......
我还尝试在控件之上放置一些控件,但没有任何显示,因为我认为它在内部使用WinForms控件,这是最顶层的。
那么如何将此视频作为背景?
<Grid>
<vlc:VlcControl x:Name="myVlcControl" Width="100" Height="100" HorizontalAlignment="Right" VerticalAlignment="Top" />
<Grid>
<Grid.Background>
<VisualBrush Stretch="Uniform">
<VisualBrush.Visual>
<Image Source="{Binding VideoSource, ElementName=myVlcControl}" />
</VisualBrush.Visual>
</VisualBrush >
</Grid.Background>
</Grid>
答案 0 :(得分:0)
MediaElement支持RTSP很好,但它可能不支持您尝试使用的编码/容器。下面生成一个工作流媒体元素,并使用VisualBrush用MediaElement绘制网格的背景:
<Grid x:Name="LayoutRoot">
<Grid.RowDefinitions>
<RowDefinition />
<RowDefinition />
</Grid.RowDefinitions>
<MediaElement x:Name="MyPlayer"
Width="640"
Height="480"
LoadedBehavior="Play"
Source="rtsp://granton.ucs.ed.ac.uk/domsdemo/v2003-1.wmv" />
<Grid Grid.Row="1"
Width="320"
Height="240">
<Grid.Background>
<VisualBrush Stretch="Uniform" Visual="{Binding ElementName=MyPlayer}" />
</Grid.Background>
</Grid>
</Grid>
答案 1 :(得分:0)
@Kolorowezworki提出Airhack control来解决此问题。
示例:
<airhack:AirControl DataContext="{Binding}">
<airhack:AirControl.Front>
<Image Source="{Binding VideoSource, ElementName=myVlcControl}" />
</airhack:AirControl.Front>
<airhack:AirControl.Back>
<vlc:VlcControl x:Name="myVlcControl" Width="100" Height="100" HorizontalAlignment="Right" VerticalAlignment="Top" />
</airhack:AirControl.Back>
</airhack:AirControl>
注意:默认情况下,AirControl
不支持DataContext
Binding
,要解决此问题,请分叉或复制存储库,并通过将其传递给“ airhack”窗口来实现对DataContext的支持。
示例:
public AirControl()
{
InitializeComponent();
alpha = new Alpha(this);
alpha.DataContext = DataContext;
DataContextChanged += (sender, args) => alpha.DataContext = DataContext;
}