颜色:如果背景为深色,则为白色;如果背景为浅色,则为黑色
我在自定义标签中绘制一些文本。
用户可以修改标签背景,但控件应根据指定的背景来适应文本可见性。
因此,当背景为深色时,我想绘制白色前景文本,当背景为浅色时,我想要绘制黑色前景。
如何“理解”颜色是浅色还是深色?
I draw some text in a custom Label.
User can modify the label background, but the control shoud accomodate the text visibility in dependence of the specified background.
So, when the background is DARK I want to draw white foreground text, when its LIGHT I want BLACK foreground.
How to "understand" if the color is LIGHT or DARK?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
一个简单的解决方案是添加背景颜色的颜色成分并将它们与阈值进行比较。
您可能想赋予蓝色较低的权重。
0.3*R+0.6*G+0.1*B
是常见的选择。A simple solution is to add the color componets of the background color and compare them to a threshold.
You might want to give blue a lower weight.
0.3*R+0.6*G+0.1*B
is a common choice.使用
Color.GetBrightness()
use
Color.GetBrightness()