2014-07-12 67 views
1

時,當我通過我的axisX圖表正在轉移滾動移動。我認爲這是因爲我使用自定義標籤。如何修復axisX寬度?圖表寬度滾動

  chart1.ChartAreas[0].AxisX.IsMarksNextToAxis = false; 

      chart1.ChartAreas[0].CursorX.IsUserEnabled = true; 
      chart1.ChartAreas[0].CursorX.IsUserSelectionEnabled = true; 
      chart1.ChartAreas[0].AxisX.ScaleView.Zoomable = true; 
      chart1.ChartAreas[0].AxisX.ScrollBar.IsPositionedInside = false; 
      chart1.ChartAreas[0].AxisX.ScaleView.Zoom(1, 250); 

      chart1.ChartAreas[0].AxisX.LabelAutoFitStyle = LabelAutoFitStyles.None; 
      chart1.ChartAreas[0].AxisX.IsLabelAutoFit = true; 

      chart1.ChartAreas[0].AxisY.LabelAutoFitStyle = LabelAutoFitStyles.None; 
      chart1.ChartAreas[0].AxisY.IsLabelAutoFit = false; 

      //custom labels 
      //... 
      //... 
       if (i % 13 == 0) 
       { 
        CustomLabel CL = new CustomLabel(); 
        CL.FromPosition = i - 13; 
        CL.ToPosition = i + 13; 
        CL.Text = L[i].Item1.ToString("d MMM\r\nHH:mm");//+"\n"+L[i].Item1.ToString("HH:mm"); 

        chart1.ChartAreas[0].AxisX.CustomLabels.Add(CL); 
       } 
       //... 
       //.. 

回答

2

大多數(即使不是全部)圖表元素都具有某種大小屬性。你的情況,你可以使用ChartAreaInnerPlotPosition財產。見MSDN更多的細節,但它可能看起來像:

chart1.ChartAreas[0].InnerPlotPosition.Width = 75; // this will make the plotting area width 75% of the whole chart area width 
chart1.ChartAreas[0].InnerPlotPosition.Height = 60; // this makes the plotting area height 60% of the chart area height 

,或者你可以這樣做:

chart1.ChartAreas[0].InnerPlotPosition = new ElementPosition(5, 10, 75, 60); 

這將設置繪圖區域的位置和大小的一次。

一件事與此屬性需要注意的是,大小不實際的像素大小,但ChartArea大小的百分比。這需要大量的小提琴演奏和試錯,讓他們正確的,你可能需要處理FormResize事件在某些情況下,保持圖表看起來好當窗口被調整大小。

1

也許問題是由最右邊的標籤出現和滾動過程中消失而引起的。如果是這樣,你可以通過設置ChartAreas[n].AxisX.LabelStyle.IsEndLabelVisible爲false禁用它。這樣你就不需要與InnerPlotPosition值作鬥爭。