1

我正在尝试在不断变化的视图(滚动、调整大小等)中包含带有一些叠加层的 VideoView。问题是,叠加层保持在同一位置。我试图修复它,我已经搜索了一个解决方案,但我无法找到或想出任何东西。有可能以某种方式做到这一点吗?

为了提供演示,我通过以下方式从LibVLCSharp.WPF.Sample应用程序中编辑了Example1.xamlExample1.xaml.cs :

Example1.xaml
...
<ScrollViewer>
    <StackPanel>
        <StackPanel Background="Blue" Height="300" Width="200"/>
        <uc:VideoView x:Name="VideoView" Width="200" Height="200"/>
        <StackPanel Background="Red" Height="300" Width="200"/>
    </StackPanel>
</ScrollViewer>
...

Example1.xaml.cs
...
public Example1()
{
    InitializeComponent();

    _controls = new Controls(this);
    VideoView.Content = _controls;
    VideoView.Height = 200;
}
...

这使窗口可滚动并应演示该问题。问题是,开始和停止按钮不会随着 VideoView 滚动。

未滚动: 滚动 展开滚动

提前致谢。

4

1 回答 1

2

如果您遵循 LibVLCSharp 和 Vlc.DotNet 中“在 vlc 视图上编写控件”的悠久历史,以及更广泛地了解“在 WinFormsHost 上编写 WPF 控件”的问题,您就会知道这都是关于 hacks 和权衡的。

简而言之:

  • WPF 没有显示视频的高性能方式,因此我们需要创建一个 WinFormsHost
  • 用户希望能够轻松地控制视频。WPF 不能轻易做到这一点(它被称为“空域问题”),我们试图提供一个开箱即用的解决方案,这实际上是一个 hack,并在上方绘制了一个窗口。

我认为问题在于我们如何处理该浮动窗口,您应该在 code.videolan.org 上发布问题。否则,您将需要使用自己的修复程序重新实现 VideoView

于 2019-03-19T06:45:06.503 回答