/ / MSChart no inicializa los límites del eje hasta que se dibuja - c #, inicialización, mschart

MSChart no inicializa los límites del eje hasta que se dibuja - c #, inicialización, mschart

MSChart en mi programa de C # está actuando de una manera peculiar. En realidad, no tendrá sus ejes "Tamaño máximo y mínimo inicializados hasta después de que se dibuje. Observe el siguiente fragmento de código.

void drawChart
{
Chart tempChart = new Chart();
Series series1 = new Series();

/*  Additional chart setup removed for clarity  */

series1.Points.AddXY(0, 4);
series1.Points.AddXY(10, 2);
series1.Points.AddXY(5, 20);
series1.Points.AddXY(8, 9);
series1.Points.AddXY(15, 30);

double max = tempChart.ChartAreas["ChartArea1"].AxisX.Maximum;
Console.WriteLine(max.ToString());      //Output:  NaN

MemoryStream theStream = new MemoryStream();
tempChart.SaveImage(theStream, ChartImageFormat.Png);

max = tempChart.ChartAreas["ChartArea1"].AxisX.Maximum;
Console.WriteLine(max.ToString());      //Output:  17
}

Como se muestra en el fragmento, cuando ejecuté el código en mi programa, el AxisX.Maximum fue NaN antes de que escribiera su imagen a una MemoryStream, pero el apropiado 17 después.

¿Por qué está haciendo esto y, lo que es más importante, cómo puedo forzarlo para que se inicialice? AxisX.Maximum sin escribir a un arroyo. Quiero que se dibuje en una imagen, pero necesito realizar la configuración en el gráfico que requiere conocer los límites de tamaño automático antes de que se rasterice.

Respuestas

2 para la respuesta № 1

Puede forzar el gráfico para calcular los ejes mínimo y máximo con

tempChart.ChartAreas["ChartArea1"].RecalculateAxesScale();