Пример #1
0
        private static Brush GetColorByIndexSeries(int index)
        {
            if (ColorDefined == null)
            {
                ColorDefined = new ConcurrentStack <Brush>();

                Action <Color> action = (Color c) =>
                {
                    var b = new SolidColorBrush(c);
                    b.Freeze();
                    ColorDefined.Push(b);
                };

                action(Color.FromRgb(64, 10, 10));
                action(Color.FromRgb(10, 10, 128));
                action(Color.FromRgb(245, 245, 5));
                action(Color.FromRgb(0, 0, 255));
                action(Color.FromRgb(0, 255, 0));
                action(Color.FromRgb(128, 0, 128));
                action(Color.FromRgb(0, 255, 255));
                action(Color.FromRgb(255, 128, 64));
                action(Color.FromRgb(255, 0, 255));
                action(Color.FromRgb(128, 0, 0));
                action(Color.FromRgb(0, 128, 0));
                action(Color.FromRgb(128, 128, 0));
                action(Color.FromRgb(255, 0, 0));
                action(Color.FromRgb(64, 0, 128));
                action(Color.FromRgb(0, 128, 128));
            }


            if (index >= ColorDefined.Count)
            {
                var R = new Random(DateTime.Now.GetHashCode());
                while (ColorDefined.Count <= index)
                {
                    var b = new SolidColorBrush(Color.FromRgb((byte)R.Next(255), (byte)R.Next(255), (byte)R.Next(255)));
                    b.Freeze();
                    ColorDefined.Push(b);
                }
            }

            return(ColorDefined.ElementAtOrDefault(index));
        }