2017-02-22 84 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; 
      } 
     }   
    } 

你可以检查它,如果它在你的最终?

希望这可以帮助你。

在此先感谢

关心!