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)); }