[英]C# NET - Draw opaque brush on form with opacity level set
我想要實現的是覆蓋屏幕的半透明背景。 然后能夠在它上面繪制不透明的畫筆。
我試過的是一個具有屏幕大小的表單,然后設置它的顏色並設置this.opacity = 0.5
。 但是這會影響表單中的所有畫筆。
我也嘗試將背景顏色設置為Color.Transparent,然后繪制一個覆蓋屏幕的額外畫筆,不透明度為0.5,然后繪制不透明畫筆......但背景也變得不透明。 即使設置了樣式標志(ControlStyles.SupportsTransparentBackColor, true)
我知道我可以通過增加一個表格來達到這個目的。 一個用於透明背景的表單和一個用於不透明前景的表單,但這不是太過分了嗎?
有沒有更好的辦法?
更新1:嘗試評論中建議的內容。
當前狀態:Form1:主程序,要求顯示“疊加”,即:Form2:疊加背景(半透明黑色)和Form3:疊加前景,這是用戶繪制的位置。
表單1和表單2表示為indended,但Form3拒絕使用透明表單。 如果我訂
this.BackColor = Color.Lime;
this.TransparencyKey = Color.Lime;
然后性能下降,程序嚴重滯后(雖然它確實變得透明)。 理想情況下我想要使用this.BackColor = Color.Transparent;
然而,這沒有任何影響(固體背景,沒有阿爾法)。
請注意,表單覆蓋屏幕,背景通常是桌面。 也許這就是為什么它不起作用?
您可以覆蓋表單的OnPaintBackground
,而無需調用它的基礎。 這將使您能夠為背景指定所需的顏色。
嘗試這個:
protected override void OnPaintBackground(PaintEventArgs e)
{
using (var brush = new SolidBrush(Color.FromAgrb(50, 0, 0, 0))
{
e.Graphics.FillRectangle(brush, e.ClipRectangle);
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.