【发布时间】:2011-07-28 14:57:37
【问题描述】:
我有一个 HEX 格式的颜色列表:
String[] validcolors = new String[]
{
"0055A5",
"101010",
"E4D200",
"FFFFFF",
"006563",
"A97B3E",
"B80000",
"6E3391",
"D191C3",
"D68200",
"60823C",
"AA8D73",
"73A1B8",
"6E6D6E",
"00582C",
"604421"
};
还有一个颜色对象:
Color c = ...
我想在validcolors 中找到最接近c 的颜色。有人可以帮帮我吗?我最初的想法是“最接近 RGB 值”,但不管怎样都行。
【问题讨论】:
-
最接近 RGB 值是我试图实现的。
-
我误解了这个问题。我将删除我的答案,但将此字符串保留为颜色转换:
Color.FromArgb(int.Parse(s.Substring(0, 2), NumberStyles.HexNumber), int.Parse(... -
在 RGB 颜色模型中执行此操作可能会产生一些非常奇怪的结果。至少它们看起来根本不像匹配项不是人眼。如果您想以正确的方式执行此操作,则应将颜色转换为 HSV/HSB 或 HSL 颜色空间。是的,它们是不同的,但在这种情况下,哪个并不重要。它们更好地模拟了人类对颜色的感知。获得匹配后,您可以转换回 RGB。
-
哈哈,是的,我从实现 manji 的答案中注意到...我将对其进行修改以使用 HSV,并发布结果