2010-03-10 1 views
2

일련의 rangebarchart에서 각각의 모든 yvalue에 대한 레이블을 어떻게 추가 할 수 있습니까?C#을 사용하여 WinForms MS Chart에서 범위 막대의 양면에 레이블을 인쇄하는 방법

당신 모든 yvalue [0]과 yvalue [1] 문서라도 내가 그 yvalues의 각 (데이터 레이블을 추가 할 필요로 rangebartype 시리즈 음모를 꾸미고, 우리가 의미하는 두 개의 yvalues이 필요하다는 것을 알고 yvalue에서 모두 [0] yvalue [1]). 어떻게 구현할 수 있습니까? 아무도 나에게 제안 할 수 있습니까? 제발!

범위 표시 줄 (범위 표시 줄의 양쪽에 표시됨)의 레이블은 아래 그림과 같아야합니다.

Label1 ███████████████ Label2 

        Label███████████████████ Label 

답변

2

는 MS 차트에서이 작업을 수행 할 내장 방법은 없습니다. 그러나 원하는 디스플레이를 제공하는 약간의 임시 해결책이 있습니다.

표시하려는 각 데이터 점 (범위 막대)에 대해 서로 위에 놓인 두 개의 데이터 점을 만들어야합니다.
DataPoint0 : X = Y = 1 5,10
DataPoint1 : X = Y = 1이 두 개의 데이터 포인트가 하나 인 것을 제외하고, 오른쪽 위에 다른 놓여 10,5

일례로서 왼쪽에서 오른쪽으로 표시되고 다른 하나는 오른쪽에서 왼쪽으로 표시됩니다.
각 DataPoint에 대해 CustomProperties 아래에 BarLabelStyle 속성이 있습니다. 두 데이터 포인트 모두 '외부'로 설정하십시오. 일반적으로 범위 표시 줄의 오른쪽에 레이블이 표시되지만 DataPoint1의 경우 Y 값이 반대로 표시되면 레이블이 범위 막대의 왼쪽에 배치됩니다. 따라서 DataPoint0에 대한 레이블을 10 (최대 값)으로 설정하고 DataPoint1에 대해 레이블을 5 (최소값)로 설정하십시오.

그러면 왼쪽에 최소값이 있고 오른쪽에 최대 값이있는 범위 막대처럼 보입니다.

주의 : 범위 바의 양쪽 끝이 무한한 지혜, 그래프, MS 차트의 가장자리에 너무 가까이 경우, 범위 바 안에 표시하는 라벨을 강제 할 것이다. 이를 극복하기 위해 실제로 DataPoint 개체의 Y 값에 세 번째 숫자를 추가 할 수 있습니다. 이 세 번째 값은 표시되지 않지만 데이터 시리즈의 가장 큰 Y 값보다 큰 경우이 큰 값을 수용하도록 차트의 크기가 다시 조정되므로 레이블이 범위 막대 내에 강제로 표시되지 않습니다. ChartArea의 속성을 설정하여 다른 방법으로 처리 할 수도 있습니다.

+0

이것은 이미 완료 한 것입니다. 감사합니다. 텍스트를 추가 할 수있는 범위 막대의 양쪽에 직사각형을 그릴 수 있습니까? 또는 MsChart 어디에서나 자유 텍스트를 그릴 수있는 방법이 있습니까? – M3ra

+0

MS 차트 개체에 자유 텍스트를 그리는 기능은 없습니다. 나는 MS Chart에서 이러한 모든 작은 한계를 계속 따라 가고있다. 기본적으로 좋은 사용자 지정 컨트롤이지만 대부분의 경우 특수 작업에 맞게 사용자 지정 컨트롤을 쉽게 사용자 지정할 수 있으므로 내 자신의 사용자 지정 차트 컨트롤을 사용하도록 선택했습니다. – Stewbob

+0

차트의 페인트 이벤트에서 Graphics.DrawString 메서드를 사용하여 MS 차트에서 자유 텍스트를 그리는 방법을 발견했습니다. – M3ra

관련 문제