[英]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.