C# 操作ZedGraphChart

来源:互联网 发布:java 读取文件名称 编辑:程序博客网 时间:2024/06/06 21:44
namespace ZedGraphChartDisplay
{
    public class DrawingPic
    {
        private ZedGraph.ZedGraphControl zedScoreChart;




        /// <summary>
        /// X轴名称
        /// </summary>
        private const string X_AXIS_NAME = "";
        /// <summary>
        /// Y轴名称
        /// </summary>
        private const string Y_AXIS_NAME = "";


        /// <summary>
        /// 缓存已构造好的曲线
        /// </summary>
        private List<CurveItem> m_CurveLst;


        private void InitGraphPane()
        {
            zedScoreChart.GraphPane.YAxis.Scale.Min = 0;
            zedScoreChart.GraphPane.YAxis.Title.Text = Y_AXIS_NAME;
            zedScoreChart.GraphPane.XAxis.Title.Text = X_AXIS_NAME;
            zedScoreChart.GraphPane.Title.IsVisible = false;
            zedScoreChart.GraphPane.XAxis.MajorGrid.IsVisible = true;
            zedScoreChart.GraphPane.YAxis.MajorGrid.IsVisible = true;
            zedScoreChart.GraphPane.XAxis.MajorGrid.Color = System.Drawing.Color.Gray;
            zedScoreChart.GraphPane.YAxis.MajorGrid.Color = System.Drawing.Color.Gray;
            zedScoreChart.GraphPane.XAxis.MinorGrid.IsVisible = true;
            zedScoreChart.GraphPane.YAxis.MinorGrid.IsVisible = true;
            zedScoreChart.GraphPane.XAxis.MinorGrid.Color = System.Drawing.Color.LightGray;
            zedScoreChart.GraphPane.YAxis.MinorGrid.Color = System.Drawing.Color.LightGray;


            //Y轴(百分数)
            zedScoreChart.GraphPane.YAxis.Scale.Min = 0;
            zedScoreChart.GraphPane.YAxis.Scale.Max = 100;
            zedScoreChart.GraphPane.Fill = new ZedGraph.Fill(System.Drawing.Color.White, System.Drawing.Color.FromArgb(255, 255, 166), 90F);
            zedScoreChart.GraphPane.Legend.Position = ZedGraph.LegendPos.Top;
            zedScoreChart.AxisChange();
        }


        private void ShowCurves()
        {


            zedScoreChart.GraphPane.CurveList.Clear();
            zedScoreChart.GraphPane.CurveList.AddRange(m_CurveLst.FindAll(p => ((LineItem)p).IsVisible == true));
            //改变轴(指标值)
            AutoChangeAxis();
            //刷新显示
            zedScoreChart.Refresh();
        }


        //自动调整坐标轴大小,防止指标切换时过大或过小,在图上看不见
        private void AutoChangeAxis()
        {
            if (zedScoreChart.GraphPane.CurveList.Count == 0)
            {
                return;
            }


            //先找出所有需要显示的点集合,
            //然后对XY排序,找出最大最小值,即为坐标最大最小值
            List<double> XData = new List<double>();
            List<double> YData = new List<double>();
            foreach (CurveItem ci in zedScoreChart.GraphPane.CurveList)
            {
                for (int i = 0; i < ci.Points.Count; i++)
                {
                    PointPair pp = ci.Points[i];
                    XData.Add(pp.X);
                    YData.Add(pp.Y);
                }
            }
            XData.Sort();
            YData.Sort();


            if (XData.Count > 0)
            {
                zedScoreChart.GraphPane.XAxis.Scale.Min = XData.First();
                zedScoreChart.GraphPane.XAxis.Scale.Max = XData.Last();
            }
            if (YData.Count > 0)
            {
                zedScoreChart.GraphPane.YAxis.Scale.Min = YData.First();
                zedScoreChart.GraphPane.YAxis.Scale.Max = YData.Last();
            }
            zedScoreChart.AxisChange();
        }


        //添加数据
        public void FillData()
        {


            LineItem li = new LineItem();


            //构造点
            List<float[]> points = CreatePoints(resultList);
            //将点添加到曲线
            foreach (float[] p in points)
            {
                li.AddPoint(p[0], p[1]);
            }
            //将曲线添加到集合
            m_CurveLst.Add((CurveItem)li);
        }
    }


}
原创粉丝点击