小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

ZedGraph怎樣在生成曲線時隨機生成不一樣的顏色

 新進小設計 2021-04-19

場景

在使用ZedGraph生成多條曲線時為了能區(qū)分曲線顏色,要求隨機設置曲線顏色。

首先從System.Drawing.Color中獲取所有顏色的對象的數(shù)組,然后將其順序打亂隨機排序,然后在生成曲線時從Color數(shù)組中取Color并賦值。

效果

 

 

注:

博客主頁:
https://blog.csdn.net/badao_liumang_qizhi
關注公眾號
霸道的程序猿
獲取編程相關電子書、教程推送與免費下載。

實現(xiàn)

單純生成曲線的代碼

LineItem myCurve = myPane.AddCurve(yList[i].Title, list, curveColor, SymbolType.None);

第一個參數(shù):圖例標題

第二個參數(shù):坐標點的list

第三個參數(shù):顏色Color對象

第四個參數(shù):曲線節(jié)點符號

所以在生成曲線時就要在第三個參數(shù)上進行修改

首先獲取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); 
               } 
        } 
//轉成數(shù)組 
Color[] colors = colorList.ToArray();

 

然后將Color數(shù)組的順序進行打亂

colors = GetDisruptedItems(colors);

 

調(diào)用亂序方法

private static Color[] GetDisruptedItems(Color[] colors) 
        { 
            //生成一個新數(shù)組:用于在之上計算和返回 
            Color[] temp; 
            temp = new Color[colors.Length]; 
            for (int i = 0; i < temp.Length; i++) 
            { 
                temp[i] = colors[i]; 
            }

            //打亂數(shù)組中元素順序 
            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;

        }

 

然后在循環(huán)生成曲線時,循環(huán)條件為要生成的曲線數(shù)量與顏色數(shù)組的長度進行對比判斷。

int index = 0;
//循環(huán)添加曲線
foreach(DataTreeNode node in Global.Instance.PrepareCompareDataInOne)
      {
          
           list = SetCurveTextInOne(yList[i].TitleKey,record);
           //如果要生成的曲線數(shù)量 < 顏色數(shù)組長度 那么就從顏色數(shù)組中去按索引取
           Color curveColor = new Color();
           if (Global.Instance.PrepareCompareDataInOne.Count < colors.Length)
               {
                    curveColor = colors[index];
                }
           //否則要生成的曲線數(shù)量 > 顏色數(shù)組長度
           else
                {
                    //當索引達到顏色數(shù)組的長度時 索引置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就是要生成的曲線的數(shù)據(jù),其Count就是要生成的曲線數(shù)量。

    本站是提供個人知識管理的網(wǎng)絡存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權內(nèi)容,請點擊一鍵舉報。
    轉藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多