私の C# プログラムの MSChart は、独特な方法で動作しています。描画されるまで、軸の最大サイズと最小サイズは実際には初期化されません。以下のコード スニペットを確認してください。
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
}
スニペットに示されているように、プログラムでコードを実行するとAxisX.Maximum
、イメージを a に書き込む前は NaN でしたMemoryStream
が、その後は適切な 17 になりました。
AxisX.Maximum
なぜこれを行うのか、さらに重要なことに、ストリームに書き込むことなく強制的に初期化するにはどうすればよいですか。画像に描画したいのですが、ラスタライズする前にオートサイズの境界を知る必要があるチャートでセットアップを行う必要があります。