Как можно отнести цвет к одному из предопределенных цветов радуги? - C#
Формулировка задачи:
Всем привет.
Посоветуйте алгоритм как можно отнести цвет к одному из предопределенных цветов радуги.
(Каждый Охотник Желает Знать Где Сидит Фазан)
Я понимаю что будут средние, но ведь все равно он к какому-то ближе.
Заранее спс.
Решение задачи: «Как можно отнести цвет к одному из предопределенных цветов радуги?»
textual
Листинг программы
using System; using System.Drawing; using System.Linq; namespace ConsoleApplication14 { class Program { static void Main() { var color = Color.FromArgb(255, 12, 244, 241); var name = GetColorName(color); Console.WriteLine(name); } private static string GetColorName(Color color) { var knownColors = (KnownColor[]) Enum.GetValues(typeof(KnownColor)); Color[] colors = new Color[knownColors.Length]; for (int i = 0; i < colors.Length; i++) { colors[i] = Color.FromKnownColor(knownColors[i]); } var closest = GetClosestColor(colors, color); return closest.Name; } private static Color GetClosestColor(Color[] colorArray, Color baseColor) { var colors = colorArray.Select(x => new { Value = x, Diff = GetDiff(x, baseColor) }).ToList(); var min = colors.Min(x => x.Diff); return colors.Find(x => x.Diff == min).Value; } private static int GetDiff(Color color, Color baseColor) { int a = color.A - baseColor.A, r = color.R - baseColor.R, g = color.G - baseColor.G, b = color.B - baseColor.B; return a * a + r * r + g * g + b * b; } } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д