2017-03-03 1 views
1

VisualStudio WindowsForms 양식 사용. 디자이너에서 차트 컨트롤 만들기.MSChart 축 RowIndex> 0에서 CustomLabel 각도

차트에 축 레이블 의 기본 레이블을 추가하려고합니다. 이렇게하려면 RowIndex 속성 = 1을 사용하여 customLabels를 추가하십시오. 따라서 기본 레이블과 customLabels가 표시됩니다. 이제 기본 레이블이 올바르게 회전되지만 사용자 정의 레이블은 올바르지 않습니다.

Axis 속성 LabelStyle.Angle은 RowIndex = 0에있는 레이블, 즉 기본 레이블에만 영향을줍니다. 그리고 RowIndex = 0에 customLabels를 놓으면 모든 기본 레이블이 사라집니다.

내가 볼 무엇 :

enter image description here

답변

0

정말, 그렇게 할 수있는 방법을 볼 : 내가보고 싶은

enter image description here

. 그 CustomLabels 모든 투명을 확인하고 : 그 이유는 개발자가 여기에

해결입니다 .. 하나 이상의 추가 행에 이르렀 시작하면 단순히 수평 레이블 공간이 충분하지 않을 수 있습니다 결정했다 아마 xxxPaint 이벤트에서 원하는대로을 그립니다.

CustomLabel cl = new CustomLabel(); 
cl.ForeColor = Color.Transparent; 
cl.RowIndex = 1; 
... 

그리고이 같은 그리기 코드 :

내가 CustomLabels 준비 :

private void chart1_PostPaint(object sender, ChartPaintEventArgs e) 
{ 
    Axis ay = chart1.ChartAreas[0].AxisY; 
    foreach (var cl in ay.CustomLabels) 
    { 
     if (cl.RowIndex == 1) 
     { 
      double vy = (cl.ToPosition + cl.FromPosition)/2d; 
      int y = (int)ay.ValueToPixelPosition(vy); 
      e.ChartGraphics.Graphics.DrawString(cl.Text, 
         cl.Axis.TitleFont, Brushes.DarkRed, 0, y); 
     } 
    } 
} 

자신의 취향의 FontBrush를 사용하십니까 여기

은 예입니다 . 다음은 결과입니다 : 당신이 더 많은 공간을 만들어야 할 수도 있습니다

enter image description here

참고 'auto'에 평소와 같이, 100%에 있고 둘의 ChartArea.Position 또는 ChartArea.InnerPlotPosition, 기본적를 조정 왼쪽 .

더 많은 행을 보려면 cl.RowIndex < 0으로 변경하고 DrawString의 x 위치 값을 확인해야합니다.

+1

답장을 보내 주셔서 감사합니다. 나는 마지막 비상 사태로 그 길을 생각했다. 내 작업은 단순히 모든 레이블을 사용자 지정하고 rowindex = 0으로 만드는 것이 더 쉬울 것이라고 생각합니다. – Prain

+0

실제로, 그 옵션이 있다면, 나는 또한 그것을 선호하는 것 같아요 .. – TaW