我在自定义标签中绘制一些文本。颜色:如果背景为黑色,则为白色,当为浅色时为黑色
用户可以修改标签背景,但控件应该根据指定的背景调节文本的可见性。
所以,当背景是DARK时,我想绘制白色的前景文字,当它的LIGHT我想要BLACK前景时。
如何“理解”颜色是浅或深?
我在自定义标签中绘制一些文本。颜色:如果背景为黑色,则为白色,当为浅色时为黑色
用户可以修改标签背景,但控件应该根据指定的背景调节文本的可见性。
所以,当背景是DARK时,我想绘制白色的前景文字,当它的LIGHT我想要BLACK前景时。
如何“理解”颜色是浅或深?
一个简单的解决方案是添加背景颜色的颜色组件并将它们与阈值进行比较。
你可能想给蓝色更低的重量。 0.3*R+0.6*G+0.1*B
是常见的选择。
我不需要给定颜色的深色或浅色。我需要确定一个给定的颜色本身是暗色还是淡色。 – serhio
http://stackoverflow.com/questions/97646/how-do-i-determine-darker-or-lighter-color-variant-of-a-给定颜色/ 97697#97697 –
@KMån:我不需要颜色的较暗或较亮的变体。我需要检测给定颜色本身是浅色还是黑色。 – serhio
你可能想接受你自己的答案。使用预定义的功能显然比重新发明车轮更好。 – CodesInChaos