如何计算随机颜色,这对于特定字符串或多或少是唯一的? 确实,RGB格式(0-255,0-255,0-255)只允许最多16581375个独特颜色,而字符串是不确定的。
字符串可以是随机的,例如hello123
或bye456
。
我的目标是通过标题文本显示几乎唯一颜色的控件(扩展器)。 因为在GUI的其他列表中有一个对该扩展器的引用,所以我想帮助用户更快地找到该条目。
所以我需要获得SolidColorBrush
作为背景。
实施例:
一个扩展器的标头为hello123
,以下扩展器标头为bye456
。所以我想将每个标题的背景设置为(几乎)唯一的颜色。
答案 0 :(得分:0)
您可以设置使用SolidColorBrush的控件的背景,如下所示:
using System.Windows.Media;
new SolidColorBrush((Color)ColorConverter.ConvertFromString("#FFDFD991"));
答案 1 :(得分:0)
可以做这样的事情来获取你的颜色代码
"#" + Convert.ToString("hello123".GetHashCode(), 16)
"hello123"
返回#12c09349
答案 2 :(得分:-3)
使用此方法,您将获得一个可用作背景的SolidColorBrush:
private static SolidColorBrush GetSolidColorBrushFromString(string value)
{
// Get Color from string
var md5 = MD5.Create();
var hash = md5.ComputeHash(Encoding.UTF8.GetBytes(value));
var color = Color.FromRgb(hash[0], hash[1], hash[2]);
var brush = new SolidColorBrush(color);
brush.Opacity = 0.2; // Readability in UI
return brush;
}
用法:
var brushBackground = GetSolidColorBrushFromString(expander.Name);
expander.Background = brushBackground;