2017-06-26 36 views
1

我在想如何更改我的標籤頁的顏色和標籤同步的背面顏色。我如何更改同步中的標籤頁和標籤的顏色

使用定時器的代碼IM是

Random rand = new Random(); 
int A = rand.Next(0, 255); 
int R = rand.Next(0, 255); 
int G = rand.Next(0, 255); 
int B = rand.Next(0, 255); 
tabPage1.BackColor = Color.FromArgb(A, R, G, B) 

這是通常發生:without changing the label back colour. changing the back colour.

+0

「tabpage和back color in sync」?你的意思是標籤頁的顏色?你的意思是隻改變一個控件的顏色......對吧? – KernelMode

+0

我錯過了一個字。 –

+0

爲什麼不是Label.BackColor == Color.Transparent? – TaW

回答

0

的原因是要更改兩個RBG通道,並且還alpha通道。

如果你一直在阿爾法255的效果消失..:

int A = 255; 

要了解你必須認爲這是一個半透明的顏色是不是一個獨立的實體。

相反,它可以讓背景在某種程度上發光,因此它的外觀隨環境而變化。

但是,該背景與標籤頁和標籤不同:標籤的背景是標籤頁,但標籤頁的背景(可能)是表單。

如果您在該面板中添加面板和另一個標籤,您可以看到該面板與第一個標籤具有相同的色調,但面板中的第二個標籤具有更深的色調,因爲現在甚至更多正在使用RGB顏色。

請注意,整個問題背後的原因是a)Winforms實現其'透明性'和b)'ambient property規則的腥謬方式。

現在它從父級複製背景以向子控件提供有關如何繪製自身的信息。因此,「透明」標籤實際上是將TabPage的半透明顏色作爲其父項,然後將它與來自與環境顏色相同的父項的相同顏色進行組合。

這意味着顏色疊加在自身上;這與使用半透明畫筆繪製的效果相同:越多的筆畫覆蓋越多的顏色顯示和透明度消失..

最後一點,旁白:堆疊半透明的實現方式不是一個給定的,自然的選擇。如果你看看photoshop圖層模式,你可以看到各種各樣的可能的方式,如果你想象用半透明畫筆繪畫到不透明的顏色上,還可以定義「正確的」結果,應該包括增加一些透明度,但是這不是gdi +做什麼;也不是默認('正常')PS層模式;也沒有Winforms控件繪畫..

+0

謝謝,它的工作和額外的信息幫助。 –