2013-04-23 8 views
1

Windows 응용 프로그램에서 MS 차트 컨트롤을 사용하고 있습니다.Microsoft 차트 컨트롤에서 플롯 영역의 크기를 얻는 방법

저는 다양한 시리즈를 동적으로 차트로 작성하고 있으며 사용자는 각 시리즈가 어떤 차트 유형이어야하는지 지정할 수 있습니다. 이로 인해 원형 차트가 선/스플라인 차트와 결합되는 상황이 발생합니다.

적어도 하나의 시리즈가 원형 차트로 지정되면 동적으로 차트 영역과 범례를 추가하여 각 시리즈에 자체 차트 영역을 제공합니다. 모든 "기본"차트 유형 (선 (영역)/스플라인 (영역)/등)은 단일 차트 영역으로 결합됩니다.

대다수가 원형 차트 인 10 개 이상의 시리즈를 추가하면 차트 크기가 너무 작아서 쓸모 없게됩니다. 내 생각은 동적으로 차트 컨트롤의 크기를 늘려서 (따라서 모든 차트 영역의 크기를 늘리는 것입니다.) 내 문제는 InnerPlotPosition의 너비와 높이가 명시 적으로 설정되어 있지 않으면 항상 0입니다.

명시 적으로 설정하지 않은 경우에도 픽셀 또는 백분율 (차트 컨트롤의 크기에 따라 픽셀을 늘릴 수있는)으로 플로팅 영역의 크기를 결정할 수있는 방법이 있습니까? 이렇게하면 최소한의 (그리고 잘하면 읽을 수있는) 값에 도달 할 때까지 차트 컨트롤 크기를 늘릴 수 있습니다.

답변

1

InnerPlotPosition이 적어도 PostPaint 이벤트 콜백에서 설정되어있는 것으로 나타났습니다. Plot Area가 계산되기 전에 해당 속성을 확인할 수 있습니다.

이 작동 : 내가 요청 무엇 렌더링 과정이 시점에서 컨트롤의 크기를 조정하고 올바르게 다시 그리기에 도착하기 어려운 것처럼 보이지만

var c = new Chart(); 
c.PostPaint += c_PostPaint; 
// Do whatever to setup the chart 
// Then in my case I'm saving the image which causes rendering 
c.SaveImage(myFileName); 


void c_PostPaint(object sender, ChartPaintEventArgs e) 
{ 
    var ipp = e.Chart.ChartAreas[0].InnerPlotPosition; // Values populated here 
} 
+0

이 정확히입니다. InnerPlotPosition이 아직 결정되지 않은 Customize 이벤트 (크기 조정과 같은 것들을 이해할 수있는 곳)는 불행한 일입니다. 어쨌든 내 질문에 대답했다. 감사. –