在ZedGraph随机生成颜色时须要从颜色数组中取颜色对象。编程
Color数组存取的是System.Drawing.Color的颜色。数组
其顺序是相邻的颜色,颜色差距不大,在取颜色时按顺序取颜色时,若是颜色条数比较少,差距会不明显。dom
须要将此数组的顺序打乱,随机进行排序。spa
注:.net
博客主页:
https://blog.csdn.net/badao_liumang_qizhi
关注公众号
霸道的程序猿
获取编程相关电子书、教程推送与免费下载 code
首先附从System.Drawing.Color中获取全部Color对象对象
//用于存取取出的颜色对象 List<Color> colorList = new List<Color>(); //经过GetMember获取全部的公共成员 foreach (var item in typeof(Color).GetMembers()) { //只取属性且为属性中的已知Color,剔除byte属性以及一些布尔属性等(A B G R IsKnownColor Name等) if (item.MemberType == System.Reflection.MemberTypes.Property && System.Drawing.Color.FromName (item.Name).IsKnownColor == true) { Color color = System.Drawing.Color.FromName(item.Name); colorList.Add(color); } } //转成数组 Color[] colors = colorList.ToArray();
而后进行随机打乱顺序排序blog
colors = GetDisruptedItems(colors);
调用乱序方法排序
private static Color[] GetDisruptedItems(Color[] colors) { //生成一个新数组:用于在之上计算和返回 Color[] temp; temp = new Color[colors.Length]; for (int i = 0; i < temp.Length; i++) { temp[i] = colors[i]; } //打乱数组中元素顺序 Random rand = new Random(DateTime.Now.Millisecond); for (int i = 0; i < temp.Length; i++) { int x, y; Color t; x = rand.Next(0, temp.Length); do { y = rand.Next(0, temp.Length); } while (y == x); t = temp[x]; temp[x] = temp[y]; temp[y] = t; } return temp; }
这里根据须要修改成本身须要的对象,获取将其直接改成泛型。教程