VB.net 2010 视频教程 VB.net 2010 视频教程 python基础视频教程
SQL Server 2008 视频教程 c#入门经典教程 Visual Basic从门到精通视频教程
当前位置:
首页 > 编程开发 > C#编程 >
  • C#教程之Winform中设置ZedGraph的X轴的刻度根据曲线获取

本站最新发布   C#从入门到精通
试听地址  
https://www.xin3721.com/eschool/CSharpxin3721/

场景

Winforn中设置ZedGraph曲线图的属性、坐标轴属性、刻度属性:

https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/100112573

在对ZedGraph进行添加曲线时,需要对X轴的刻度进行赋值,需要一个string的数组。

并且在生成曲线时还要给曲线一个个坐标点的list。

如何在生成完曲线后直接从曲线中取得曲线的横坐标作为X轴的赋值。

注:

博客主页:
https://blog.csdn.net/badao_liumang_qizhi
关注公众号
霸道的程序猿
获取编程相关电子书、教程推送与免费下载。

实现

循环添加曲线

复制代码
PointPairList list = null;
                for (int i = 0; i < yList.Count; i++)
                {
                    //循环添加曲线
                    foreach(DataTreeNode node in Global.Instance.PrepareCompareDataInOne)
                    {
                        IEnumerable<Entity.Record> record =  Global.Instance.VirtualData.RecordDataList.Where(p => p.CycleIndex == int.Parse(node.Id));
                        list = SetCurveTextInOne(yList[i].TitleKey,record);
                        LineItem myCurve = myPane.AddCurve(yList[i].Title, list, System.Drawing.ColorTranslator.FromHtml(yList[i].Color), SymbolType.None);
                        myCurve.YAxisIndex = i;                                                                 //很关键,对应使用那个坐标值
                    }
                }
复制代码

 

给曲线赋值

复制代码
public static PointPairList SetCurveTextInOne(string yAxis,IEnumerable<Entity.Record> record)
        {
            PointPairList list = new PointPairList();

            #region 数据验证

            if (record == null)
            {
                return list;
            }

            #endregion

            else
            {
                //曲线赋值
                int maxCtn = 0;      //最大点数
                double y = 0.0;
                int x =1;
                List<Entity.Record> recordList = new List<Entity.Record>();
                foreach (Entity.Record re in record)
                {
                    maxCtn++;
                    recordList.Add(re);
                }
                Func<Entity.Record, object> getYValue = BaseHelper.EmitGetter<Entity.Record>(yAxis);
               
                for (int k = 0; k < recordList.Count; k++)
                {
                    if (BaseHelper.IsExistsProperty<Entity.Record>(yAxis))
                    {
                        
                        object objY = getYValue(recordList[k]);
                        if (objY != null)
                        {
                            double.TryParse(objY.ToString(), out y);
                        }
                    }
                    list.Add(x, y, k+1); //添加一组数据(k:x数据点的索引,y:y的值,xTag:x的实际值)
                    x++;
                }
                
                return list;
            }

        }
复制代码

 

X轴的刻度值在曲线中获取

myPane.XAxis.Scale.TextLabels = list.Select<PointPair, string>(p => p.X.ToString()).ToArray<string>();         //X轴文本

相关教程