C# 如何設(shè)置label(標(biāo)簽)控件的背景顏色為透明
有時(shí)候,我們需要將控件的背景顏色設(shè)定為透明,比如說(shuō)label(標(biāo)簽)控件。那么,如何將控件的背景顏色設(shè)定為透明?是不是只要將控件的BackColor屬性設(shè)為Transparent(透明)就可以了呢?答案是否定的??此坪芎?jiǎn)單,其實(shí)不然,在實(shí)際操作過(guò)程中,很讓人抓狂,抓狂到讓你懷疑人生。
關(guān)于透明
首先要解釋一下,什么叫做透明。在C#這里,透明就是指透過(guò)控件的背景,可以看到其父控件(容器)表面的顏色。所謂的透明,其實(shí)就是將父控件表面的顏色設(shè)定為自己的背景顏色。
設(shè)置控件背景顏色為透明的步驟和注意事項(xiàng):
以pictureBox上的label控件為例,設(shè)置label的背景為透明,可以看到pictureBoxs上的圖片。
(1)首先,將label控件的背景顏色設(shè)為透明(Transparent)。在屬性窗口中設(shè)置,或者在代碼中設(shè)置:label1.BackColor=Color.Transparent;
(2)其次,將label控件的Parent屬性設(shè)定為picturebox,也就是說(shuō),將pictureBox設(shè)為label的父控件。在代碼中寫上:label1.Parent=pictureBox1;或者pictureBox1.Controls.Add(label1);
(3)最后,調(diào)整控件的位置。將label控件的位置(Location)重新設(shè)定一下,使其顯示在pictureBox中合適的位置:這一步是非常重要的!這常常是出問(wèn)題的地方,如果Location屬性沒(méi)設(shè)置好,有可能看不到標(biāo)簽。
注意事項(xiàng):
(1)為什么將label控件的背景設(shè)為透明,透過(guò)背景看到的不是pictureBox的顏色,而是窗體的顏色?
其原因是:label控件的父控件默認(rèn)是窗體,當(dāng)將label的背景顏色設(shè)為透明之后,看到的將會(huì)是窗體的顏色,即使你已經(jīng)把label控件拖到pictureBox控件上面也無(wú)濟(jì)于事。解決方法是,重新設(shè)置label的Parent屬性,使label控件的父控件為pictureBox。
(2)為什么將label的Parent屬性設(shè)置為pictureBox之后,運(yùn)行時(shí)發(fā)現(xiàn)label控件不見了,或者顯示的位置不在拖放的位置?
原因是:
label等控件默認(rèn)的父控件是窗體,一開始的時(shí)候,location屬性也是相對(duì)于窗體的。當(dāng)運(yùn)行時(shí),label父控件改為了PictureBox,那么location屬性也將是改為相對(duì)于PictureBox。這里是重點(diǎn),這是為什么標(biāo)簽不見的原因:加了label1.parent=pictureBox1這段代碼之后,label的位置基準(zhǔn)就變?yōu)镻ictureBox的了,但location的數(shù)值沒(méi)有變,當(dāng)location的數(shù)值比PictureBox的size還大的時(shí)候,label不會(huì)顯示。因此,在設(shè)置完label1.parent=PictureBox1之后,還要設(shè)置location屬性,比如label1.location=new point(0,0)。這時(shí)label顯示在PictureBox的左上角。這是關(guān)于位置基準(zhǔn)的問(wèn)題,控件以誰(shuí)為父親,它的位置基準(zhǔn)就一父控件的左上角為基準(zhǔn)。在切換父控件的時(shí)候,要注意把位置也得調(diào)一下。同樣是location=(100,100),以不同的控件作為父控件,顯示的位置是不一樣的。也就是說(shuō),顯示位置不但跟數(shù)值有關(guān),還跟選擇的基準(zhǔn)有關(guān)。
例子
在窗體上放一個(gè)pictureBox控件,并在其Image屬性中放入一張圖片,然后在pictureBox上拖放一個(gè)label控件。顯示效果:pictureBox上顯示圖片,上面的label控件的背景是透明的,透過(guò)label控件可以看到pictureBox上的圖片。
(1)僅僅將label的背景設(shè)為透明
private void Form1_Load(object sender, EventArgs e) { label1.BackColor = Color.Transparent; }
運(yùn)行效果:
可以看到,label的背景是窗體的顏色。
(2)不僅設(shè)置背景透明,還將label的Parent屬性改為pictureBox。
private void Form1_Load(object sender, EventArgs e) { label1.BackColor = Color.Transparent; label1.Parent = pictureBox1; //pictureBox1.Controls.Add(label1); }
運(yùn)行效果 :
發(fā)現(xiàn),label控件不見了。
(3)不僅設(shè)置背景透明,將label的Parent屬性改為pictureBox,還把Location屬性重新設(shè)置為合適的值。
private void Form1_Load(object sender, EventArgs e) { label1.BackColor = Color.Transparent; label1.Parent = pictureBox1;//將pictureBox1設(shè)為標(biāo)簽的父控件 //pictureBox1.Controls.Add(label1); label1.Location = new Point(80, 80);//重新設(shè)定標(biāo)簽的位置,這個(gè)位置時(shí)相對(duì)于父控件的左上角 }
運(yùn)行效果:
背景終于透明了!
以上就是C# 如何設(shè)置label(標(biāo)簽)控件的背景顏色為透明的詳細(xì)內(nèi)容,更多關(guān)于c# label控件透明的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
- C# 實(shí)現(xiàn)顏色漸變窗體控件詳細(xì)講解
- C# 實(shí)現(xiàn)顏色的梯度漸變案例
- C# Color.FromArgb()及系統(tǒng)顏色對(duì)照表一覽
- C#使用RichTextBox實(shí)現(xiàn)替換文字及改變字體顏色功能示例
- C#利用Label標(biāo)簽控件模擬窗體標(biāo)題的移動(dòng)及窗體顏色不斷變換效果
- C# 根據(jù)表格偶數(shù)、奇數(shù)加載不同顏色
- C#更改tabControl選項(xiàng)卡顏色的方法
- C#及WPF獲取本機(jī)所有字體和顏色的方法
- C#實(shí)現(xiàn)更改MDI窗體背景顏色的方法
- c# 顏色選擇控件的實(shí)現(xiàn)代碼
相關(guān)文章
C# OpenFileDialog對(duì)話框控件的使用
OpenFileDialog是C#中常用的對(duì)話框控件,用于讓用戶選擇文件,本文就來(lái)介紹一下OpenFileDialog對(duì)話框控件的具體使用,具有一定的參考價(jià)值,感興趣的可以了解一下2023-09-09C#逐行分元素讀取記事本數(shù)據(jù)并寫入數(shù)據(jù)庫(kù)的方法
這篇文章主要介紹了C#逐行分元素讀取記事本數(shù)據(jù)并寫入數(shù)據(jù)庫(kù)的方法,通過(guò)StreamReader類里的ReadLine()方法實(shí)現(xiàn)逐行讀取的功能,是非常實(shí)用的技巧,需要的朋友可以參考下2014-12-12C#實(shí)現(xiàn)六大設(shè)計(jì)原則之接口隔離原則
這篇文章介紹了C#實(shí)現(xiàn)六大設(shè)計(jì)原則之接口隔離原則的方法,文中通過(guò)示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-02-02C#實(shí)現(xiàn)公式計(jì)算驗(yàn)證碼的示例詳解
現(xiàn)在很多的平臺(tái)已經(jīng)不使用普通的數(shù)字、字母等驗(yàn)證碼了,取而代之的是拼圖類、選圖類、旋轉(zhuǎn)類或者計(jì)算類的驗(yàn)證碼。本文將利用C#實(shí)現(xiàn)一個(gè)公式計(jì)算驗(yàn)證碼,感興趣的可以了解一下2022-10-10C#使用iTextSharp從PDF文檔獲取內(nèi)容的方法
這篇文章主要介紹了C#使用iTextSharp從PDF文檔獲取內(nèi)容的方法,涉及C#基于iTextSharp操作pdf文件的相關(guān)技巧,需要的朋友可以參考下2015-06-06