[英]How do i change the colour of a tabpage and label in sync
原因是您同時更改了RBG通道和alpha通道。
如果將alpha保持在255,則效果消失。
int A = 255;
要理解,您必須考慮半透明的顏色不是獨立的實體。
相反,它可以使背景發光到某種程度,因此其外觀會隨環境而變化。
但是選項卡頁和標簽的背景不同:標簽的背景是標簽頁,但標簽頁的背景是(可能是)表單。
如果在該面板中添加一個面板和另一個標簽,則可以看到該面板的陰影與第一個標簽相同,但是該面板中的第二個標簽的陰影更暗,因為現在越來越多的rgb顏色被使用。用過的。
請注意,整個問題背后的原因是:a)Winforms實現其“透明度”的可惡方式,以及b) “環境財產規則”。
現在,它從父級復制背景,以向子級控件提供有關如何繪制自身的信息。 因此,“透明”標簽實際上是將TabPage的半透明顏色作為其父級,然后將其與從同一父級中獲得的相同顏色組合為環境顏色。
這意味着顏色會堆疊在一起。 這與使用半透明筆刷繪畫的效果相同:疊加的筆觸越多,彩色顯示就越多,透明度就會消失。
除了最后的注釋:實現堆疊半透明的方法不是給定的自然選擇。 如果您查看Photoshop圖層模式,則可以看到多種可能的方式,並且如果使用半透明筆刷將圖像成像到不透明的顏色上,則還可以定義“正確”的結果應該包括增加一些透明度,但這不是gdi +會做什么? 也沒有默認的(“正常”)PS層模式; 也不是Winforms控制畫。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.