簡體   English   中英

如何使控件透明覆蓋DirectShow視頻?

[英]How can I make a control transparently overlay a DirectShow video?

我有一個控件VideoControl,它使用DirectShow顯示視頻-它被設置為IVideoWindow的所有者。 我還有另一個控件AreaControl,該控件應該在視頻控件上顯示一個虛線矩形。 使用SetStyle(ControlStyles.SupportsTransparentBackColor,true)將AreaControl設置為透明。 如果我將AreaControl放在任何其他控件上,它將按預期工作,在其后面的控件上顯示一個虛線矩形。 但是,當我將虛線矩形控件放在視頻控件上時,AreaControl填充了VideoControl的BackColor。

我要怎么做才能使視頻通過AreaControl並覆蓋虛線矩形顯示? 有沒有一種方法可以使VideoControl自己用視頻進行繪制,而不僅僅是繪制其BackColor?

據我所知,您無法直接做您想做的事情。 問題是,控件的透明樣式的實現。 具有此style屬性的控件基本上只是繪制,其背后的原因使其看起來透明。 (實際上,這根本不是透明的)。

我想到的唯一解決方案是使用窗口(窗體)並將控件放入其中。 通過將其不透明度屬性設置為小於1.0,可以使窗體透明。 值0.0將是完全透明的(讀取:不可見)。 虛線邊框應為黑色。 Fe 0.4的不透明度將顯示為灰色。

或者,您可能對Form的TransparencyKey屬性有些運氣。 將此設置為白色可能會達到預期的效果,但是我尚未對此進行測試。

無論哪種情況,表格都應該是完全無邊界的。 當視頻表單移動時,您可能必須添加一些代碼來重新放置表單。

最后,答案是使用AreaControl的Region屬性,因為我們不需要部分透明。

暫無
暫無

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

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