none
C# - Export or Save Chart Control Series to Array. RRS feed

  • Pergunta

  • Hello friends.

    Thank you in advance for your time and attention.

    My development environment: i7, W7 Ultimate, VS2010 Ultimate, WinForm, C#, and Chart Control.

    Target: Windows XP, Vista, 7 and 8.

    How to export or save the chart control series to an array? Need including the X axis labels or way to retrieve them in the future.

    We have a chart with 3 series Spline, fed by the minute. By default we show the last 10 days in X axis.

    #region AddNewDataPoint
        int tmStamp=14400; // 10 Days in minutes
        public void AddNewPoint()
            {
            var cX=this.chart1.ChartAreas[0];
            DateTime timeStamp=DateTime.Now;
            // Add new data point to its series.
            chart1.Series["01"].Points.AddXY(timeStamp.ToOADate(),Convert.ToDouble(i_01));
            chart1.Series["02"].Points.AddXY(timeStamp.ToOADate(),Convert.ToDouble(i_02));
            chart1.Series["03"].Points.AddXY(timeStamp.ToOADate(),Convert.ToDouble(i_03));
            // remove all points from the source series older than 1 minute.
            double removeBefore=timeStamp.AddMinutes((double)(tmStamp)*(-1)).ToOADate();
            //remove oldest values to maintain a constant number of data points
            while(chart1.Series[0].Points[0].XValue<removeBefore)
            { chart1.Series[0].Points.RemoveAt(0); }
            cX.AxisX.Minimum=chart1.Series[0].Points[0].XValue;
            cX.AxisX.Maximum=DateTime.FromOADate(chart1.Series[0].Points[0].XValue).AddMinutes(tmStamp).ToOADate();
            chart1.Invalidate();
            }
        #endregion // AddNewDataPoint

    We create the chart with the code below:

    #region Setting the Chart
        private void SetChart()
            {
            var v_Interval=86400D; // 1 Day interval in seconds.
            cX.AxisX.ScaleView.MinSize=1;
            cX.AxisX.ScaleView.MinSizeType=DateTimeIntervalType.Days;
            cX.CursorX.Interval=0;
            cX.AxisX.LabelStyle.Format="HH:mm:ss\nyyyy-MM-dd";
            cX.AxisX.LabelStyle.Interval=v_Interval;
            cX.AxisX.LabelStyle.IntervalType=System.Windows.Forms.DataVisualization.Charting.DateTimeIntervalType.Seconds;
            cX.AxisX.MajorGrid.Interval=v_Interval;
            cX.AxisX.MajorGrid.IntervalType=System.Windows.Forms.DataVisualization.Charting.DateTimeIntervalType.Seconds;
            cX.AxisX.MajorTickMark.Interval=v_Interval;
            cX.AxisX.MajorTickMark.IntervalType=System.Windows.Forms.DataVisualization.Charting.DateTimeIntervalType.Seconds;
            cX.AxisY.IsLabelAutoFit=false;
            cX.AxisY.IsStartedFromZero=false;
            } // Setting the Chart
        #endregion


    silvio pontes

    segunda-feira, 3 de junho de 2013 03:00