2013-05-31 1 views
1

C# 프로그램의 MSChart가 특이한 방식으로 작동합니다. 축이 그릴 때까지 초기화 된 축의 최대 크기 및 최소 크기를 실제로 가지지는 않습니다. 아래의 코드 스 니펫을 관찰하십시오. 내 프로그램에서 코드를 실행할 때, 스 니펫에 나타낸 바와 같이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 내가 MemoryStream로의 이미지를 작성하기 전에 NaN이 였지만, 이후 적절한 (17).

왜 이렇게하고 더 중요한지, 어떻게 스트림에 쓰지 않고도 AxisX.Maximum을 초기화하도록 강제 할 수 있습니까? 이미지에 그려 지길 원하지만 래스터 화되기 전에 자동 크기 조정 경계를 알아야하는 차트에서 설정을해야합니다.

답변

2

tempChart.ChartAreas["ChartArea1"].RecalculateAxesScale(); 
와 축 최소 및 최대를 계산하는 차트를 강제