2013-03-15 1 views
3

차트 컨트롤에 2 chartAreas이 있으면 차트 컨트롤은 기본적으로 chartAreas를 위에 배치하여 각 영역이 차트 컨트롤의 사용 가능한 크기의 50 %를 차지하도록합니다. .C#을 수정하는 방법 차트 컨트롤 차트 영역 백분율

chartAreas의 백분율을 변경하여 상위 차트에 75 %, 하단 차트에 25 %를 적용 할 수 있습니까?

+1

코드 ... –

+0

@ Peretz이 부분에서는 디자이너를 사용하여 차트를 생성하고 있습니다. 이 코드를 복사 할 수는 있지만 그 코드가 도움이 될지 확신 할 수 없습니다. 이 차트는 2 개의 chartAreas가있는 표준 차트 일뿐입니다. 디자이너에게 영향을 미치는 코드는 없습니다. 나는 누군가가 이것을하기위한 코드를 알고 있는지 알아보기 위해 노력하고있다. – Xantham

답변

8

그래서 결국 발견했지만 매우 잘 작성되었다고 생각하지 않습니다. 각 chartArea에는 ChartArea.Position 속성이 있습니다. 형식이 ElementPosition 인이 속성에는이 문제와 관련된 4 개의 속성이 포함되어 있습니다.

높이 : 차트 요소의 높이를 가져 오거나 설정합니다.
너비 : 차트 요소의 너비를 가져 오거나 설정합니다.
X : 해당 차트 요소의 왼쪽 위 모서리에 대한 상대적 X 좌표를 가져 오거나 설정합니다.
Y : 적용 가능한 차트 요소의 왼쪽 위 모서리에 대한 상대 Y 좌표를 가져 오거나 설정합니다. 100

기본적으로, 각각의 높이를 변경할 수 있고, 각각의 Y는 이동 -가 깊게 파고 때

상기 HeightWidth 특성도 만 0을 입력 할 수 있도록, 상대 좌표에 명시되어 그들을 옮기십시오. 초기 생성 후에는 다른 숫자를 자동으로 조정하지 않습니다.

예를 들어, chartArea [1]의 Height을 좀 더 작은 것으로 변경하면 이전에 있던 곳에 고정되어 여전히 의미가있어 그 아래에 많은 공백이 남습니다.

그렇다면 chartArea [0]의 Height을 늘리면 방금 크기를 조정 한 chartArea [1]이 그려 질 수 있습니다. 그래서 나는 그 아래로 이동하기 위해 chartArea [1]의 Y을 설정해야합니다. 그래야 그려지지 않으며 공백이 사라집니다. 더 명확 조금, 나는이 chartAreas임을 차트 컨트롤을 참조 할이 설명하려면

chart1.ChartAreas[0].Position.Y = 10; 
chart1.ChartAreas[0].Position.Height = 60; 
chart1.ChartAreas[1].Position.Y = 70; 
chart1.ChartAreas[1].Position.Height = 20; 

:

그래서, 질문에 무엇을 요구 유사한 무언가를 얻기 위해, 나는로 설정 에서 "부모".

이것은 백분율이지만이 예에서는 상위 크기가 100 픽셀이라고 가정합시다.

첫 번째 chartArea가 10px로 시작되도록 설정하고 약 60px 높이로 설정합니다. 그런 다음 70px에서 두 번째 chartArea를 표시하기 시작하고 약 20px의 키를 만듭니다.

이 차트의 크기가 200px이면 비율은 같지만 실제 픽셀은 두 배가됩니다. 따라서 첫 번째 차트 영역을 60으로 설정하면 높이가 120px가됩니다.

이 프로그램은 축 레이블을 덮어 쓰는 제목을 가지고 있기 때문에이 프로그램을 조금 더 덧붙여 보았습니다. 그러나이 번호가 더 잘 설명하는 데 도움이되었다고 느꼈습니다.

+0

이것은 사용자가 볼 수없는 동안 완료되면 차트를 지 웁니다. (별도의 TabPage에 내 차트가 있고 차트가 사용자 눈에 표시된 후에 * 호출 된 경우에만 정상적으로 작동합니다). – Ivan

+0

올바른 결과를 산출하는 적절한 장소는 chartPaint 이벤트 핸들러 (그러나 PrePaint/PostPaint 또는 다른 곳에서는 찾을 수 없음)입니다. 그러나 창을 최대한 활용하지 않을 때 눈에 보이는 쓰레기가 발생합니다. – Ivan

+0

그래서이 문제를 해결하는 방법에 대해 실제로 궁금해합니다. – Ivan

2

두 번째 차트의 .Y 위치를 첫 번째 차트의 맨 아래에 설정할 수도 있습니다. 그렇게하면 첫 번째 차트의 위치 만 신경 써야합니다.코드는 다음과 같은 :

chart1.ChartAreas[0].Position.Y = 10; 
chart1.ChartAreas[0].Position.Height = 60; 
chart1.ChartAreas[1].Position.Y = chart1.ChartAreas[0].Position.Bottom; 
chart1.ChartAreas[1].Position.Height = 20; 

할 수도 패드 .Y 위치, 물론, 당신은 차트 사이에 원하는 얼마나 많은 공백에 따라 달라집니다. 여러 차트를 사용하는 응용 프로그램을 만들 때이 방법을 사용했으며 개별 차트에서 수행 된 작업과 상관없이 각 차트가 올바르게 배치 될 것을 보장합니다.