程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> C#控件背景透明的幾種解決方案

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

編輯: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

 作者:binsweet

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved