2008-11-20 72 views
0

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

我需要做些什麼才能讓視頻通過AreaControl顯示,虛線矩形覆蓋在它上面?有沒有辦法讓VideoControl使用視頻來繪製自己,而不是僅僅繪製它的BackColor?

回答

0

最後,這個答案證明是使用AreaControl的Region屬性,因爲我們不需要部分透明度。

1

據我所知,沒有辦法做,你想直接做什麼。問題在於,實現了控件的透明風格。具有此樣式屬性的控件基本上只是繪製,它背後的內容使其看起來透明。 (實際上它根本不透明)。

我想到的唯一解決方案是使用一個窗口(Form)並將控件放入該窗口中。通過將其「不透明度」屬性設置爲小於1.0的值,表單可以變爲透明。值爲0.0將是完全透明的(閱讀:不可見)。虛線邊框應完全黑色。用f.e.的不透明度0.4它會顯示爲灰色。

或者,您可能會對Form的TransparencyKey屬性有一些好運。將其設置爲白色可能會產生所需的效果,但我沒有測試過這個效果。

在任何一種情況下,表格都應該是完全無邊界的。當視頻表單移動時,您可能需要添加一些代碼來重新定位表單。