2017-02-22 60 views
0

TeeChart's Multiple Chart Alignment along the Bottom X-Axis Issue沿對準下軸

目前我們使用的TeeChart的圖表控件(.NET/C#),具有同步的問題。在附加屏幕截圖中顯示的示例中,我們有兩個圖表控件,其右側垂直軸完全同步。頂部圖表包含面積圖,而底部圖表包含體積圖表。在兩個圖表上以特定時間間隔繪製垂直線時,我們發現在兩個圖表中繪製的具有相同值的垂直線不會同步。請注意,兩個圖表都使用相同的數據集繪製。

我們在同一個問題上做了一些r & d,我們的觀察結果表明這是由於TeeChart中使用的不同的圖表樣式。但根據我們客戶的要求,我們需要在多個圖表上同步這些垂直線條。任何幫助,將不勝感激。

回答

0

下面的代碼將兩個系列的垂直線對齊。我認爲你可以這樣做:

public Form1() 
    { 
     InitializeComponent(); 
     InitializeChart(); 
    } 

    Steema.TeeChart.Axis axis1; 
    DateTime dt; 
    private void InitializeChart() 
    { 
     tChart1 = new Steema.TeeChart.TChart(); 
     tChart1.Dock = DockStyle.Fill; 
     this.Controls.Add(tChart1); 
     tChart1.Aspect.View3D = false; 
     axis1 = new Steema.TeeChart.Axis(); 
     tChart1.Axes.Custom.Add(axis1); 
     axis1.Horizontal = false; 

     tChart1.Axes.Right.StartPosition = 0; 
     tChart1.Axes.Right.EndPosition = 50; 

     axis1.StartPosition = 51; 
     axis1.EndPosition = 100; 

     axis1.OtherSide = true; 
     axis1.AxisPen.Visible = false; 
     dt = DateTime.Now; 
     tChart1.Axes.Bottom.Labels.DateTimeFormat = "dd/MM"; 
     tChart1.Axes.Bottom.Labels.Style = Steema.TeeChart.AxisLabelStyle.Value; 
     InitializeSeries(); 
     tChart1.Draw(); 

     tChart1.AfterDraw += TChart1_AfterDraw; 
    } 

    private void TChart1_AfterDraw(object sender, Steema.TeeChart.Drawing.Graphics3D g) 
    { 
     for (int i=0; i<tChart1[0].Count; i++) 
     { 
      Point point1, point2; 
      point1= new Point(tChart1.Axes.Bottom.CalcPosValue(tChart1[0].XValues[i]),tChart1.Axes.Right.CalcYPosValue(tChart1[0].YValues[i])); 
      point2= new Point(tChart1.Axes.Bottom.CalcPosValue(tChart1[0].XValues[i]), axis1.CalcYPosValue(tChart1[0].YValues[i])); 
      g.Line(point1, point2); 
     } 
    } 

    private void InitializeSeries() 
    { 
     for (int i=0; i<10; i++) 
     { 
      if (i==0) 
      { 
       new Steema.TeeChart.Styles.Area(tChart1.Chart); 
       tChart1.Series[i].XValues.DateTime = true; 
       (tChart1.Series[i] as Steema.TeeChart.Styles.Area).AreaLines.Visible = false; 
       (tChart1.Series[i] as Steema.TeeChart.Styles.Area).Color = Color.BlueViolet; 
       (tChart1.Series[i] as Steema.TeeChart.Styles.Area).Transparency = 20; 
       Random rnd = new Random(); 
       for (int j=0; j<10; ++j) 
       { 
        tChart1.Series[i].Add(dt, rnd.Next(100)); 
        dt = dt.AddDays(1); 
       } 

       tChart1.Series[i].Marks.Visible = false; 
       tChart1.Series[i].VertAxis = Steema.TeeChart.Styles.VerticalAxis.Right; 
      } 
      else if(i==1) 
      { 
       new Steema.TeeChart.Styles.Volume(tChart1.Chart); 
       tChart1.Series[i].DataSource = tChart1.Series[i - 1]; 
       tChart1.Series[i].CustomVertAxis = axis1; 
      } 
     }   
    } 

你可以檢查它,如果它在你的最終?

希望這可以幫助你。

在此先感謝

關心!