1. 程式人生 > >控制元件重疊透明問題的簡單處理方法

控制元件重疊透明問題的簡單處理方法

       最近用C#寫個小程式,裡面用到了PictureBox和Label兩種控制元件,因為某些原因必須將兩者重疊使用(PictureBox在下層,Label在上層),結果卻發現即使是設定Label的BackColor為Transparent,在實際執行時Label的背景依然是白色非透明。查閱相關文件後發現解決方法主要有兩種,一種是通過自定義控制元件,重寫控制元件的OnPaint()等方法來實現的,可以達到部分透明的效果,但是當介面反覆重新整理時顯示效果不好,可能會出現黑影或閃爍,因此我並未採用。另一種解決方案是在控制元件初始化時將PictureBox置於底層,將Label控制元件置於頂層,然後設定Label控制元件的BackColor為Transparent,指定其Parent屬性為PictureBox的對應例項。

PictureBox pb = new PictureBox();
Label lb = new Label();
pb.SendToBack();
lb.Parent = pb;
lb.BackColor = Color.Transparent;
lb.BringToFront();
this.Controls.Add(pb);
pb.Controls.Add(lb);