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 № 1Puede forzar el gráfico para calcular los ejes mínimo y máximo con
tempChart.ChartAreas["ChartArea1"].RecalculateAxesScale();