ocaccy
asked on
C# - How to export or save the Chart Control series to array?
Hello everyone.
Thank you in advance for your time and attention.
My development environment: i7, W7Ult, VS2010Ult, 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.
Thank you in advance for your time and attention.
My development environment: i7, W7Ult, VS2010Ult, 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
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
ASKER
Solved this way: When we launched a value in Serie Point, also launched in an Array that is saved from time to time.
Best regards,
ocaccy
Best regards,
ocaccy
ASKER
Regards