我必须为C ++ / VCL应用程序中的特定控件编写自己的鼠标悬停代码。问题是,考虑到前景色和背景色的任何组合,如何计算高亮颜色以指示鼠标已超过该控件?
我找到了有关如何将RGB转换为HSL并调整亮度的文章(参考:how to highlight a given color in c sharp和algorithm to switch between rgb and hsb color values),所以我有数学部分。当文本颜色已经是白色时,它决定了该怎么做。或者如果用户在白色上使用黑色,则使黑色变亮使其在白色上变灰,并且非常难以阅读。
我在想我可能想要做一些事情,比如拍摄背景颜色,在色轮上找到相反的颜色(我不知道该怎么做)。如果该颜色与文本颜色太接近(无论如何确定),请使其更亮或更暗。
有没有人有他们愿意分享的算法?
谢谢!
修改:此问题被标记为Determine font color based on background color的副本。该解决方案选择黑色或白色作为给定背景颜色的字体颜色。我想更进一步,当鼠标悬停在该文本上时,选择第三种颜色作为突出显示。谢谢!