【发布时间】:2011-04-22 16:08:51
【问题描述】:
我不知道散列是否是正确的词,但我想半随机地将字符串转换为十六进制或 argb 颜色。
我使用了 string.GetHasCode 函数,但结果偏向绿色:
string[] list = { "Test String", "something else", "Test Hooray" };
foreach (string k in list)
{
string x = k.ToUpper().GetHashCode().ToString("X8");
Console.WriteLine("#" + x.Substring(0,6));
}
理想情况下,我希望以相似前缀开头的字符串具有大不相同的颜色。例如,“Test String”和“Test Hooray”应该完全不同,因为它们都以“Test”开头。
我并不真正担心一个绝对的解决方案,我只是想要一些足够好的东西。 list[] 一次最多将有大约 10 个元素,并且大多数时候只有 2、3 或 4 个。这意味着颜色只需不同于 2 或其他 3 种颜色。
我基本上是在生成一个视觉列表,其中颜色引用了名称,但名称应始终映射到相同的颜色。
编辑:示例输出:
#66BD44
#7EC83E
#95E4FE
颜色:http://www.colorcombos.com/combotester.html?color0=66BD44&color1=7EC83E&color2=95E4FE&color3=000316
【问题讨论】:
-
根据需要计算哈希值,但将其用作色调而不是 rgb 值,然后使用相同的 S 和 L 将 hsl 转换为 rgb 进行所有转换,然后您将不会得到这么难看的颜色。