LibVLCSharp.WPF VideoView.Content(overlay)滚动

问题描述 投票:1回答:1

我试图在更改视图中包含VideoView和一些叠加(滚动,调整大小等)。问题是,叠加层保持在相同的位置。我试图解决它,我已经寻找解决方案,但我无法找到或想出任何东西。有可能以某种方式这样做吗?

为了提供演示,我以下列方式编辑了LibVLCSharp.WPF.Sample应用程序中的Example1.xaml和Example1.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滚动。

未滚动:Unscrolled滚动:Scrolled

提前致谢。

c# wpf libvlc libvlcsharp
1个回答
2
投票

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

简而言之:

  • WPF没有高效的显示视频的方式,所以我们需要创建一个WinFormsHost
  • 用户希望能够轻松地对视频进行控制。 WPF不能轻易做到这一点(它被称为“空域问题”),我们试图提供一个开箱即用的解决方案,这实际上是一个黑客攻击并绘制一个漂浮在上面的窗口。

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

© www.soinside.com 2019 - 2024. All rights reserved.