在给定前景色和背景色的情况下,我如何计算第三种颜色
How can I calculate a THIRD color given a foreground and background color?
我再次问这个问题是因为我的第一次尝试被错误地标记为重复,我仍然希望有人能为我找到答案。
我必须为C++/VCL应用程序中的特定控件编写自己的鼠标悬停代码。问题是,给定前景和背景颜色的任意组合,如何计算高亮显示颜色以指示鼠标在该控件上?
我不是在问如何根据背景颜色选择字体/文本颜色。这个问题肯定已经得到了回答。我需要做的是选择第三种颜色,当鼠标在上面时,用它来突出显示项目
我想我可能想做一些事情,比如取背景色,在色轮上找到相反的颜色(我不知道怎么做)。如果该颜色与文本颜色过于接近(无论您如何确定),请将其调亮或调暗。
有人愿意分享算法吗?
谢谢!
如果您想找到互补色(色轮上的相反色),可以将前景颜色转换为HSV空间(或许多其他颜色空间中的任何一个,如Y'CbCr、Y'IQ等),将色调分量旋转180°并转换回RGB。
正如您所怀疑的那样,如果背景颜色与结果颜色过于接近,则这可能不起作用。不过,这给了你一些选择。如果将两种颜色(fg和bg)都转换为HSV,则可以找到两种色调正好介于前景色和背景色之间的颜色。只需找到两种输入颜色色调之间的中间角度,即可获得第一种可能的颜色,然后再加180°,即可获得另一种可能的色彩。
但更大的问题是,你为什么要设置选择颜色?你应该使用系统高亮颜色,除非你有充分的理由不这样做。
相关文章:
- 为什么"do while"循环不断退出,即使条件计算结果为 false?
- 递归函数计算序列中的平方和(并输出过程)
- (C++)分析树以计算返回错误值的简单算术表达式
- 我的字符计数代码计算错误.为什么
- 在计算中使用二的幂有多有利可图
- 将"打开的CV图像"中的"颜色"转换为整数格式
- 如何计算文件中的"columns"数?
- 计算排序向量的向量中唯一值的计数
- 如何使用 std::累积在 C++ 中计算总和立方体
- 使用Qt C++计算类似Git的SHA1哈希
- OpenCV C++.快速计算混淆矩阵
- cpp二进制搜索问题,计算给定数组中输入元素的出现次数
- 为什么 STL 函数使用节点的颜色来计算 std::map 节点前身
- 如何有效地计算在整个像素着色器阶段中使用颜色的次数
- 拥有云pcl::P ointCloud<xyzrgb>,如何独立计算每个颜色层的直方图?
- 如何从彩色图像中提取和计算相似颜色点的数量
- 在给定前景色和背景色的情况下,我如何计算第三种颜色
- 从灰景到彩色的颜色计算
- 用于计算色差(delta E)和颜色空间转换的C/ c++库
- 如何计算用c种不同颜色画n个不同的球的方法