簡體   English   中英

如何同步更改標簽頁和標簽的顏色

[英]How do i change the colour of a tabpage and label in sync

我想知道如何更改標簽頁的顏色並同步標記背景色。

我在計時器中使用的代碼是

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)

這是通常發生的情況: 無需更改標簽底色。 改變背景色。

原因是您同時更改了RBG通道和alpha通道。

如果將alpha保持在255,則效果消失。

int A = 255;

要理解,您必須考慮半透明的顏色不是獨立的實體。

相反,它可以使背景發光到某種程度,因此其外觀會隨環境而變化。

但是選項卡頁和標簽的背景不同:標簽的背景是標簽頁,但標簽頁的背景是(可能是)表單。

如果在該面板中添加一個面板和另一個標簽,則可以看到該面板的陰影與第一個標簽相同,但是該面板中的第二個標簽的陰影更暗,因為現在越來越多的rgb顏色被使用。用過的。

請注意,整個問題背后的原因是:a)Winforms實現其“透明度”的可惡方式,以及b) “環境財產規則”。

現在,它從父級復制背景,以向子級控件提供有關如何繪制自身的信息。 因此,“透明”標簽實際上是將TabPage的半透明顏色作為其父級,然后將其與從同一父級中獲得的相同顏色組合為環境顏色。

這意味着顏色會堆疊在一起。 這與使用半透明筆刷繪畫的效果相同:疊加的筆觸越多,彩色顯示就越多,透明度就會消失。

除了最后的注釋:實現堆疊半透明的方法不是給定的自然選擇。 如果您查看Photoshop圖層模式,則可以看到多種可能的方式,並且如果使用半透明筆刷將圖像成像到不透明的顏色上,則還可以定義“正確”的結果應該包括增加一些透明度,但這不是gdi +會做什么? 也沒有默認的(“正常”)PS層模式; 也不是Winforms控制畫。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM