Видеопроигрыватель Directshow изменить размер проигрывателя

Я создал простую форму, которая может воспроизводить видео, используя функции из библиотеки прямого показа. Видео воспроизводится на панели в пользовательском элементе управления, который имеет довольно простую форму. Мне интересно, есть ли способ для видео масштабировать его размер вместе с формой. Я попытался закрепить элемент управления в форме (используя док-станцию) и установить для размера автоматического изменения значение true. Я чувствую, что должно быть какое-то простое решение, но оно не приходит ко мне. Я понимаю, что это очень общее, но я был бы очень признателен за любую помощь, а также возможно ли это.


person Ian Panzica    schedule 20.09.2013    source источник


Ответы (1)


Вам необходимо обновить позицию видео вместе с изменением размеров формы (IVMRWindowlessControl9.SetVideoPosition и т.п.). Образцы DirectShow.NET делают это:

\Samples\VMR9\BitmapMixer\MainForm.cs:

private void MainForm_ResizeMove(object sender, EventArgs e)
{
    if (windowlessCtrl != null)
    {
        int hr = windowlessCtrl.SetVideoPosition(null,
           DsRect.FromRectangle(this.ClientRectangle));
    }
}
person Roman R.    schedule 20.09.2013
comment
Не использовал это точно, но использовал это как лучшую отправную точку для моего решения. Спасибо! - person Ian Panzica; 23.09.2013
comment
@IanPanzica, какое у вас было решение, пожалуйста? - person CJBrew; 06.01.2014
comment
@CJBrew Мне удалось найти функцию ConfigureVideoWindow в классе проигрывателя, которую я вызывал всякий раз, когда размер элемента управления изменяется, и его размеры зависят от панели, на которой размещено видео. - person Ian Panzica; 07.01.2014