public static Color[] LabDistanceSort(Color[] colors, Color color) { if (colors == null) { return(colors); } if (colors.Length == 0) { return(colors); } SortedDictionary <ColorIndex, Color> l = new SortedDictionary <ColorIndex, Color>(); int i; for (i = 0; i < colors.Length; i++) { l.Add(new ColorIndex(ColorTransform.LabDistance(color, colors[i]), i), colors[i]); } Color[] r = new Color[colors.Length]; i = 0; foreach (KeyValuePair <ColorIndex, Color> p in l) { r[i++] = p.Value; } return(r); }
public static Color FindLabNearest(Color color, Color[] colors) { if (colors == null) { return(color); } if (colors.Length == 0) { return(color); } Color c = colors[0]; double diff = ColorTransform.LabDistance(color, c); for (int i = 1; i < colors.Length; i++) { double d = ColorTransform.LabDistance(color, colors[i]); if (d < diff) { diff = d; c = colors[i]; } } return(c); }