2017-02-22 19 views
0

TeeChart's Multiple Chart Alignment along the Bottom X-Axis IssueВыравнивание диаграммы управления несколькими TeeChart наряду Bottom Ось

В настоящее время мы имеем синхронизации проблемы с использованием Control Chart TeeChart (в .net/C#). В примере, показанном на прилагаемом скриншоте, у нас есть два элемента управления диаграммой, правая вертикальная ось которых синхронизирована. Верхняя диаграмма содержит диаграмму области, а нижний график содержит диаграмму объема. При рисовании вертикальных линий на обеих диаграммах в определенный временной интервал мы обнаружили, что вертикальные линии, нарисованные в обеих диаграммах с одинаковым значением, не синхронизируются. Обратите внимание, что обе диаграммы построены с одним и тем же набором данных.

В этом же выпуске мы сделали несколько r & d, и наши наблюдения показывают, что это связано с различными стилями диаграммы, используемыми в TeeChart's. Но согласно требованию нашего клиента нам необходимо синхронизировать эти вертикальные линии на нескольких диаграммах. Любая помощь по этому вопросу будет принята с благодарностью.

ответ

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; 
      } 
     }   
    } 

Не могли бы вы проверить его, если он будет работать в конце?

Надеюсь, это вам поможет.

Заранее благодарен

С уважением!