C#控件背景透明的幾種解決方案


已經很少做winform程序了,最新參與了一個小項目,遇到了控件背景透明的功能要求,特在此總結一下,供有需要的同行參考。

0、背景透明的概念和分類

背景透明是啥意思呢,就是背景透明。,廢話了。其實你想過沒有,要求不一樣,實現的難道和技術手段也不一樣。

最基本的就是不顯示控件自己的背景,那,那顯示誰的背景?

背景透明后,透過去顯示誰,也就是說后面的誰不透明,這是問題的關鍵,換句話說,透明控件的parent是一個還是多個。

1、簡單的背景透明,parent是一個的情況

a、自然透明,如圖label1

實現:把控件背景色設置成窗口背景色

b、需要把picture設為parent才能透明的label2

實現:this.label2.Parent = this.pictureBox1;

c、本身就是label,只不過設置了Image屬性,相當於加了背景圖,自然也背景透明

this.label3.Image = Image.FromFile("xfb.jpg");
d、普通的label是不能跨控件透明的

小結:對於背景是單一控件來說,背景透明都好實現,但是對背景是多對象來說說,要實現背景透明就比較難。

2、背景是多個控件背景的透明

說實話,很少有這種要求,更多的,是下面第三中情況。

3、透明文字,半透明背景,最后后的背景任意

這個效果類似於千千靜聽的桌面歌詞,文字背景是全透明的,可以設置一個帶顏色和透明度的背景。

其實實現很簡單,原理就是用了兩個窗口,文字是一個透明窗口,帶顏色和透明度的背景是一個打底窗口,應用的時候把這兩個窗口的不要的屬性都去掉,如邊框,狀態欄圖標等,最后就是設置好兩個窗口的大小和位置以及層級關系就Ok了。

文字窗口背景透明this.TransparencyKey = this.BackColor; 顯示文字 直接在 paint事件中drawstring

帶顏色和透明度背景窗口:直接用 backcolor 和 Opacity


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM