Exemple #1
0
        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);
        }
Exemple #2
0
        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);
        }