場景
在使用ZedGraph生成多條曲線時為了能區分曲線顏色,要求隨機設定曲線顏色,
首先從System.Drawing.Color中獲取所有顏色的物件的陣列,然后將其順序打亂隨機排序,然后在生成曲線時從Color陣列中取Color并賦值,
效果

注:
博客主頁:
https://blog.csdn.net/badao_liumang_qizhi
關注公眾號
霸道的程式猿
獲取編程相關電子書、教程推送與免費下載,
實作
單純生成曲線的代碼
LineItem myCurve = myPane.AddCurve(yList[i].Title, list, curveColor, SymbolType.None);
第一個引數:圖例標題
第二個引數:坐標點的list
第三個引數:顏色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();
然后將Color陣列的順序進行打亂
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; }
然后在回圈生成曲線時,回圈條件為要生成的曲線數量與顏色陣列的長度進行對比判斷,
int index = 0; //回圈添加曲線 foreach(DataTreeNode node in Global.Instance.PrepareCompareDataInOne) { list = SetCurveTextInOne(yList[i].TitleKey,record); //如果要生成的曲線數量 < 顏色陣列長度 那么就從顏色陣列中去按索引取 Color curveColor = new Color(); if (Global.Instance.PrepareCompareDataInOne.Count < colors.Length) { curveColor = colors[index]; } //否則要生成的曲線數量 > 顏色陣列長度 else { //當索引達到顏色陣列的長度時 索引置0 if (index >= colors.Length) { index = 0; } curveColor = colors[index]; } LineItem myCurve = myPane.AddCurve(yList[i].Title, list, curveColor, SymbolType.None); index++; }
其中Global.Instance.PrepareCompareDataInOne就是要生成的曲線的資料,其Count就是要生成的曲線數量,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/47476.html
標籤:其他
上一篇:xlua protobuf
