我想實現的是覆蓋屏幕的半透明背景。 然後能夠在其上繪製不透明的畫筆。C#NET - 在不透明度設置的窗體上繪製不透明畫筆
我試過的是用屏幕大小的表格,然後設置它的顏色和設置this.opacity = 0.5
。但是,這會影響表格中的所有畫筆。
我也嘗試將背景顏色設置爲Color.Transparent,然後在繪製不透明刷子之前繪製一個覆蓋不透明度爲0.5的屏幕的附加筆刷,然後繪製不透明筆刷...但背景也變得不透明。 即使風格標誌設置(ControlStyles.SupportsTransparentBackColor, true)
我知道我可以通過有一個額外的形式來實現這一點。 一種形式的透明背景和一種不透明的前景,但不是矯枉過正?
有沒有更好的方法?
更新1: 嘗試在評論中建議的內容。
當前狀態: Form1中:主程序,呼籲「覆蓋」來顯示,這是: 窗體2:疊加背景(半透明的黑色),並且 Form3:覆蓋前景,這是用戶平局。
表單1和2的工作方式與Indended類似,但Form3拒絕使用透明性。 如果我設置
this.BackColor = Color.Lime;
this.TransparencyKey = Color.Lime;
則性能下降和程序嚴重滯後(雖然它變得透明)。 理想情況下,我想要使用this.BackColor = Color.Transparent;
但是沒有任何效果(純色背景,沒有alpha)。
請注意,窗體覆蓋屏幕和背景通常是桌面。也許這就是爲什麼它不起作用?
一種選擇是顯示您的表單之前創建一個截圖,並將它作爲一個背景圖像。也許不是最好的解決方案,但它很簡單(就像我:P) –
@ C.Evenhuis這是一個好主意,我想到了。我正在嘗試製作截圖程序,所以我希望能夠在後臺捕獲潛在的視頻:) –
您需要*兩個*窗口的三明治。底部一個使用不透明度,最上面一個使用TransparencyKey,並且是您繪製的一個。三明治示例代碼[在這裏](http://stackoverflow.com/a/4503371/17034)。 –