簡體   English   中英

C#DirectShow .Net Center視頻與背景

[英]C# DirectShow .Net Centre video with background

我正在使用DirectShow .NET以C#格式在控件中顯示視頻。 我需要在表單時使視頻充滿控件,從而使控件變大/變小(如果MainForm_ResizeMove的if分支處理此問題)。 如果設置了屬性,我還需要保持源視頻的大小。 MainForm_ResizeMove的else部分中的代碼對此進行了處理。 我的問題是,else部分將我的視頻放置在以控件為中心的正確位置上,背景為灰色。 由於我已將視頻位置設置為視頻的大小,因此未應用邊框顏色(因為在這種情況下沒有邊框)。 有人可以建議最好的解決方案是什么嗎?

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);  
            } 
        }
    }

實際上很簡單,將控件的背景色設置為黑色!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM