簡體   English   中英

MSChart在繪制之前不初始化軸范圍

[英]MSChart not initializing axis bounds until drawn

我的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
}

如代碼片段所示,當我在程序中運行代碼時,在將其映像寫入MemoryStream之前, AxisX.Maximum為NaN,但之后為適當的17。

為什么這樣做,更重要的是,如何強制它初始化AxisX.Maximum而不寫入流。 我確實希望將其繪制到圖像上,但是我需要在圖表上進行設置,該設置要求在柵格化之前知道自動調整大小范圍。

您可以使用以下命令強制圖表計算軸的最小值和最大值

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM