208
|
Joseph Daigle Sarabpreet Singh Anand · 技术社区 · 15 年前 |
![]() |
1
404
我遇到了类似的问题。我必须找到一种选择对比字体颜色的好方法来在色阶/热图上显示文本标签。它必须是通用的方法,生成的颜色必须是“好看的”,这意味着简单的生成互补色不是很好的解决方案-有时它生成奇怪的,非常密集的颜色,很难观察和阅读。 经过长时间的测试,并试图解决这个问题,我发现最好的解决办法是选择白色字体为“暗”色,黑色字体为“亮”色。 下面是我在C中使用的函数示例:
这是测试了许多不同的色阶(彩虹,灰度,热,冰,和许多其他),是唯一的“通用”方法,我发现。
编辑
编辑2 @Webseed提供了这个算法的一个很好的工作示例: http://codepen.io/WebSeed/full/pvgqEq/ |
![]() |
2
11
谢谢你 @加切克 . 以下是Android版本:
以及改进的(较短的)版本:
|
![]() |
3
9
以防有人想要一个简短的,也许更容易理解的版本 GaceK's answer :
注: 我去掉了 luma 值(使明亮的颜色具有更高的值,这对我来说更自然,也是“默认”的计算方法)。 我使用了和gacek相同的常量 here 因为他们为我工作得很好。 (您也可以将此实现为 Extension Method 使用以下签名:
然后你可以通过
|
![]() |
4
8
我迅速执行了GACEK的回答:
|
![]() |
5
6
javascript[es2015]
|
![]() |
6
5
这是一个很有帮助的答案。谢谢! 我想共享一个SCSS版本:
现在正在研究如何使用该算法为菜单链接自动创建悬停颜色。较亮的标题会得到较暗的悬停,反之亦然。 |
![]() |
7
5
谢谢你发这篇文章。 对于任何可能感兴趣的人,下面是Delphi中该函数的一个示例:
|
![]() |
8
2
丑蟒蛇,如果你不想写的话:)
|
![]() |
9
2
我也有同样的问题,但我必须在 PHP . 我用@ Garek solution 我也用了这个答案: Convert hex color to RGB values in PHP 将十六进制颜色代码转换为RGB。 所以我要分享它。 我想在给定背景十六进制颜色的情况下使用这个函数,但并不总是从“”开始。
|
![]() |
10
1
目标C的实现
|
![]() |
11
1
iOS Swift 3.0(uicolor扩展名):
|
![]() |
12
0
如果你在操纵色彩空间以获得视觉效果,那么在HSL(色调、饱和度和亮度)中通常比在RGB中更容易操作。在RGB中移动颜色以产生自然的令人愉悦的效果在概念上是相当困难的,而转换成HSL、在那里操作、然后再转换回来在概念上更直观,并且总是能产生更好的效果。 维基百科有 good introduction 到HSL和密切相关的HSV。网络周围有免费的代码来进行转换(例如 here is a javascript implementation ) 你所使用的精确变换是一个品味问题,但我个人认为,逆转色调和亮度的成分,肯定会产生一个良好的高对比度颜色作为第一近似值,但你可以很容易地获得更微妙的效果。 |
![]() |
13
0
您可以在任何色调背景上使用任何色调文本,并确保其清晰可见。我总是这么做。在javascript中有一个公式 Readable Text in Colour â STW* 正如它在链接上所说,公式是反伽玛调整计算的一个变化,尽管IMHO更易于管理。 链接右侧的菜单及其相关页面使用随机生成的文本和背景颜色,始终清晰可见。所以是的,很明显这是可以做到的,没问题。 |
![]() |
14
0
作为Kotlin/Android扩展:
|
![]() |
15
0
一个Android变体,它也捕获了alpha。 (谢谢@thomas vos)
|
![]() |
16
0
Swift 4示例:
更新
-发现
|
![]() |
John V · 是否存在单元测试无法发现的逻辑/流错误类型? 6 年前 |
![]() |
Beefster · 为什么ANSI颜色转义以“m”而不是“]”结尾? 7 年前 |
![]() |
Guillermo Gutiérrez · STR转换是如何工作的? 7 年前 |
![]() |
RudziankoÅ · 合并排序数组算法 7 年前 |
|
user8852560 · 构造函数中的验证和构造函数冲突 7 年前 |
![]() |
jav974 · 订购产品时寻找最佳价格组合的算法 7 年前 |
![]() |
hippietrail · 确定浮点数中前导零的数量 7 年前 |