2017-01-20 9 views
0

막 대형 차트에 52 개의 Bar 시리즈를 그리어 1 년 동안 주를 표시하려고합니다.문제가있는 막 대형 차트 (Forms MC Chart)

enter image description here

내가 라벨, x 값, y를 값으로 그리는이 시리즈가 : 아래 그림에서 볼 수 그러나, 차트에 문제가있는 것 같습니다. 예 :

var series = new Series 
     { 
      Name = seriesName, 
      ChartArea = chartAreaName, 
      Color = color, 
      ChartType = SeriesChartType.RangeBar, 
      XValueType = ChartValueType.Auto, 
      YValueType = ChartValueType.Auto, 
      SmartLabelStyle = new SmartLabelStyle 
      { 
       AllowOutsidePlotArea = LabelOutsidePlotAreaStyle.Yes, 
       MovingDirection = LabelAlignmentStyles.Right, 
       IsMarkerOverlappingAllowed = false 
      } 
     }; 

내가 막을 수있는 방법이 양식 :

chart1.Series["Data"].Points.AddXY("W1", 0, 168); 
chart1.Series["Missing"].Points.AddXY("W1", 0, 0); 

그러나 바 시리즈 (때로는 smiller 두꺼운 sometines), 나도 같은 방법을 만들더라도 차이가있는 것 같습니다 사고?

+0

귀하의 ChartType은 무엇입니까? 막 대형 차트의 경우 y 값을 두 개 이상 추가 할 수 없으므로 코드가 실행되지 않습니다. 또한 : 절대 x 값을 문자열로 추가하지 마십시오! – TaW

+0

간단히 ChartType = SeriesChartType.RangeBar를 설정합니다. –

답변

0

효과는 막대 수가 너무 많아서 반올림 효과가 발생합니다.

안티 앨리어싱 속성이 있습니다 (52)

픽셀의 InnerPlotPosition.Height의 수를 나눌 수 있는지 확인을 당신이 한 것 방지하려면 .. : 그것은 ..하지만

chart.AntiAliasing = AntiAliasingStyles.All; 

이미 기본값으로 All으로 설정되어 있습니다.

가장 가까운 크기를 계산하는 것은 원하는 것처럼 간단하지 않습니다. InnerPlotPosition을 계산하는 메소드의 경우 here을 볼 수 있으며 ToRectangleF();을 사용하면 차트에 자동 값이 사용되는 동안 계산 번호가 적용될 수 있습니다.

숫자가 백분율로 표시되고 다른 요소, 즉 제목, 범례 및 레이블이 모두 포함 된 x 축의 값이 같아서 작동하는 숫자를 찾기 위해 계산을 역으로 수행하는 것이 어려울뿐만 아니라 실패 할 수도 있습니다 각각의 크기는 Chart입니다. 그리고 분명히 더 많은 포인트를 추가 할 때 ..

크기를 조정하지 않고도 살 수있는 경우 시행 착오를 통해 chart.Size을 찾을 수 있습니다. 버튼에서 성장하여 클릭 : chart.Height += 1;

을하지만 IMO 가장 좋은 방법은 로 감소되어 어쩌면이 같은 바 ' 제어 방식으로 자신에 대한, : 아직

yourSeries.SetCustomProperty("PixelPointWidth", "3"); 

efect에도 것 그러나 큰 간격으로 눈에 띄지는 않을 것입니다.