1

私の 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なぜこれを行うのか、さらに重要なことに、ストリームに書き込むことなく強制的に初期化するにはどうすればよいですか。画像に描画したいのですが、ラスタライズする前にオートサイズの境界を知る必要があるチャートでセットアップを行う必要があります。

4

1 に答える 1

2

チャートに軸の最小値と最大値を計算させることができます

tempChart.ChartAreas["ChartArea1"].RecalculateAxesScale();
于 2013-06-11T09:10:19.017 に答える