LibVLCSharp.WPF VideoView.Content (оверлей) прокрутка - PullRequest
1 голос
/ 18 марта 2019

Я пытаюсь включить VideoView с некоторым наложением в изменяющееся представление (прокрутка, изменение размера и т. Д.). Проблема в том, что оверлей остается в том же положении. Я пытался это исправить, я искал решение, но не смог ничего найти или придумать. Можно ли это как-то сделать?

Чтобы предоставить демо, я отредактировал Example1.xaml и Example1.xaml.cs из LibVLCSharp.WPF.Sample в приложении следующим образом:

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: Unscrolled прокручивается: Scrolled

Заранее спасибо.

1 Ответ

2 голосов
/ 19 марта 2019

Если вы следили за длинной историей «записи элементов управления над представлением vlc» в LibVLCSharp и Vlc.DotNet, а в более широком смысле - над вопросом «записи элемента управления WPF для WinFormsHost», вы знаете, что все дело в хаках и компромиссах .

Короче говоря:

  • В WPF отсутствует эффективный способ отображения видео, поэтому нам нужно создать WinFormsHost
  • Пользователи хотят легко иметь возможность контролировать видео. WPF не может сделать это легко (это называется «проблема воздушного пространства»), и мы постарались предложить готовое решение, которое на самом деле является хаком и рисует окно, плавающее выше.

Я думаю, что проблема заключается в том, как мы обрабатываем это плавающее окно, и вы должны опубликовать проблему на code.videolan.org. В противном случае вам нужно будет переопределить VideoView с вашим собственным исправлением

...