C # DirectShow. Net Center видео с фоном - PullRequest
0 голосов
/ 12 февраля 2012

Я использую DirectShow .NET для отображения видео в элементе управления в форме C #.Мне нужно иметь видео для заполнения элемента управления, когда форма и, следовательно, элемент управления становится больше / меньше (ветвь if MainForm_ResizeMove обрабатывает это).Мне также требуется поддерживать размер исходного видео, если установлено свойство.Код в разделе else MainForm_ResizeMove обрабатывает это.Проблема в том, что в другом разделе мое видео размещено в правильном положении по центру элемента управления, а фон - серый.Так как я установил положение видео на размер видео, цвет рамки не применяется (так как в этом случае границы нет).Может кто-нибудь посоветовать, каким будет лучшее решение?

private IVMRWindowlessControl9 windowlessCtrl = null;

...
private void MainForm_Paint(object sender, PaintEventArgs e)
    {           
        if (windowlessCtrl != null)
        {
            IntPtr hdc = e.Graphics.GetHdc();
            int hr = windowlessCtrl.SetBorderColor(0x00FFFFFF);
            hr = windowlessCtrl.RepaintVideo(this.Handle, hdc);
            e.Graphics.ReleaseHdc(hdc);
        }
    }

    private void MainForm_ResizeMove(object sender, EventArgs e)
    {
        if (windowlessCtrl != null)
        {
            if (fillScreen || (this.ClientRectangle.Width < streamFrameWidth) || (this.ClientRectangle.Height < streamFrameHeight))
            {
                int hr = windowlessCtrl.SetVideoPosition(null, DsRect.FromRectangle(this.ClientRectangle));
            }
            else
            {
                Rectangle rect = new Rectangle((this.ClientRectangle.Width / 2) - (streamFrameWidth / 2), 
                                               (this.ClientRectangle.Height/ 2) - (streamFrameHeight / 2), 
                                                streamFrameWidth, streamFrameHeight);
                int hr = windowlessCtrl.SetVideoPosition(null, rect);  
            } 
        }
    }

1 Ответ

0 голосов
/ 18 февраля 2012

Это было просто, установите черный цвет фона элемента управления !!

...