C 設定label(標籤)控制項的背景顏色為透明

2021-08-09 11:33:51 字數 2358 閱讀 1955

有時候,我們需要將控制項的背景顏色設定為透明,比如說label(標籤)控制項。那麼,如何將控制項的背景顏色設定為透明?是不是只要將控制項的backcolor屬性設為transparent(透明)就可以了呢?答案是否定的。看似很簡單,其實不然,在實際操作過程中,很讓人抓狂,抓狂到讓你懷疑人生。

首先要解釋一下,什麼叫做透明。在c#這裡,透明就是指透過控制項的背景,可以看到其父控制項(容器)表面的顏色。所謂的透明,其實就是將父控制項表面的顏色設定為自己的背景顏色。

以picturebox上的label控制項為例,設定label的背景為透明,可以看到pictureboxs上的。 

(1)首先,將label控制項的背景顏色設為透明(transparent)。在屬性視窗中設定,或者在**中設定:label1.backcolor=color.transparent; 

(2)其次,將label控制項的parent屬性設定為picturebox,也就是說,將picturebox設為label的父控制項。在**中寫上:label1.parent=picturebox1;或者picturebox1.controls.add(label1); 

(3)最後,調整控制項的位置。將label控制項的位置(location)重新設定一下,使其顯示在picturebox中合適的位置:這一步是非常重要的!這常常是出問題的地方,如果location屬性沒設定好,有可能看不到標籤。 

注意事項:

(1)為什麼將label控制項的背景設為透明,透過背景看到的不是picturebox的顏色,而是窗體的顏色? 

其原因是:label控制項的父控制項預設是窗體,當將label的背景顏色設為透明之後,看到的將會是窗體的顏色,即使你已經把label控制項拖到picturebox控制項上面也無濟於事。解決方法是,重新設定label的parent屬性,使label控制項的父控制項為picturebox。 

(2)為什麼將label的parent屬性設定為picturebox之後,執行時發現label控制項不見了,或者顯示的位置不在拖放的位置? 

原因是: 

label等控制項預設的父控制項是窗體,一開始的時候,location屬性也是相對於窗體的。當執行時,label父控制項改為了picturebox,那麼location屬性也將是改為相對於picturebox。這裡是重點,這是為什麼標籤不見的原因:加了label1.parent=picturebox1這段**之後,label的位置基準就變為picturebox的了,但location的數值沒有變,當location的數值比picturebox的size還大的時候,label不會顯示。因此,在設定完label1.parent=picturebox1之後,還要設定location屬性,比如label1.location=new point(0,0)。這時label顯示在picturebox的左上角。這是關於位置基準的問題,控制項以誰為父親,它的位置基準就一父控制項的左上角為基準。在切換父控制項的時候,要注意把位置也得調一下。同樣是location=(100,100),以不同的控制項作為父控制項,顯示的位置是不一樣的。也就是說,顯示位置不但跟數值有關,還跟選擇的基準有關。

在窗體上放乙個picturebox控制項,並在其image屬性中放入一張,然後在picturebox上拖放乙個label控制項。顯示效果:picturebox上顯示,上面的label控制項的背景是透明的,透過label控制項可以看到picturebox上的。 

(1)僅僅將label的背景設為透明

private

void

form1_load(object sender, eventargs e)

執行效果: 

可以看到,label的背景是窗體的顏色。

(2)不僅設定背景透明,還將label的parent屬性改為picturebox。

private

void

form1_load(object sender, eventargs e)

執行效果 

發現,label控制項不見了。

(3)不僅設定背景透明,將label的parent屬性改為picturebox,還把location屬性重新設定為合適的值。

private

void

form1_load(object sender, eventargs e)

執行效果: 

背景終於透明了!

C 窗體控制項 標籤控制項Label

visual studio附帶的許多控制項。這些控制項擁有各種功能,通過visual studio的設計功能,開發使用者介面 處理使用者的互動將非常簡單 有趣。在使用windows窗體時,就是在使用system.windows.forms命名空間。這個命名空間使用using指令包含在儲存form類的...

C 實現透明背景的垂直Label控制項

本文描述如何在c 中建立乙個透明背景色的垂直label使用者控制項。該使用者控制項允許你從底部或頂部開始繪製文字。本文是vertical label control in vb.net的延續。其實,更準確的說,我是把他的工作翻譯到c 中,並新增了從下向上顯示文字的功能。另外,支援背景透明。使用 本文...

MFC 設定static(標籤)控制項背景透明

1 設定控制項的屬性transparent 為true 2 過載onctlcolor函式 在該函式體中加入以下 if pwnd getdlgctrlid idc x idc device stat為static控制項的id 3 解決重影問題,新增重新整理區域性背景的函式,該函式主要用於單獨重新整理所...