Ent*_*ity 4 c# colors rounding
我有一个HEX格式的颜色列表:
String[] validcolors = new String[]
{
"0055A5",
"101010",
"E4D200",
"FFFFFF",
"006563",
"A97B3E",
"B80000",
"6E3391",
"D191C3",
"D68200",
"60823C",
"AA8D73",
"73A1B8",
"6E6D6E",
"00582C",
"604421"
};
Run Code Online (Sandbox Code Playgroud)
和一个颜色对象:
Color c = ...
Run Code Online (Sandbox Code Playgroud)
我想找到的颜色最接近c在validcolors.有人可以帮帮我吗?我最初的想法是"最接近RGB值",但无论什么工作都没问题.
我会考虑将十六进制转换为.NET颜色,然后计算somr距离((x2-x1)²+(y2-y1)²)并使用此距离取最近值:
string closestColor = "";
double diff = 200000; // > 255²x3
foreach(string colorHex in validColors)
{
Color color = System.Drawing.ColorTranslator.FromHtml("#"+colorHex);
if(diff > (diff = (c.R - color.R)²+(c.G - color.G)²+(c.B - color.B)²))
closestColor = colorHex;
}
return closestColor;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1439 次 |
| 最近记录: |