Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C++ Builder > TChart - добавление Series в цикле


Автор: Khan 25.4.2008, 08:03
Доброе время суток! На форме компонент TChart, рисую линию таким образом:
Код

int m;
m=1; //пока сам определяю, но должно по ходу программы
for(int i=0;i<m;i++) {
  for(int j=0;j<n;j++)      
      Series1->AddXY(masX[i][j],masY[i][j],"",clRed); }

Как можно реализовать добавление линий в цикле, если m>1, т.е. Series2->AddXY.., Series3->AddXY.. и причем разными цветами. Т.е. с увеличением i в цикле, увеличивалась Series и менялся цвет линии. Возможно ли такое?  smile  Или сделать всё на условиях? у меня по условию m<=4.
Заранее благодарю! 

Автор: petlyura 25.4.2008, 10:30
TColor Col[4] = {clRed, clYellow, ...};

for(int i=0; i < count;  i++)
{
    TFastLineSeries* NewSeries=new TFastLineSeries(this);
     AddSeries(NewSeries);
     NewSeries->Active=...;
     NewSeries->SeriesColor = Col[i]; // а тут задаете разные цвета
     NewSeries->LinePen->Width = ...;
     NewSeries->XValues->DateTime =...;
     NewSeries->XValues->Order = ...;
     NewSeries->YValues->DateTime =...;
     NewSeries->YValues->Order =... ;
     NewSeries->VertAxis = ...;
     NewSeries->Tag=i;
     Series[i]->Active=true;
}
 
for(int i=0; i < SeriesCount(); i++)
 {
  Series[i]->AddXY( masX[i][j],masY[i][j],"",clRed );  
 }
Где-то так...

Автор: Khan 25.4.2008, 11:48
petlyura, что-то мне не понятно...   smile 
SeriesCount(); - это что за функция? count - это количество Series? 

Автор: petlyura 26.4.2008, 10:40
Цитата

petlyura, что-то мне не понятно...    
SeriesCount(); - это что за функция? count - это количество Series?


count - это твое m, используй вместо count m. 

SeriesCount() - This is the number of Series (Active or not) a Chart has. (help BCB) 

Автор: Khan 28.4.2008, 07:31
Код

int k=10;
int *y;
double *x;
x=new double [k];
y=new int [k];
for (int i=0; i<k;i++) {x[i]=0.0; y[i]=0;}
for (int i=0; i<k;i++) x[i]=i+1;
for (int i=0; i<k;i++) y[i]=i+20;


int m=1;

TColor Col[4] = {clRed, clYellow, clBlue, clGreen};

for(int i=0; i < m;  i++)
{
    TLineSeries* NewSeries=new TLineSeries(this);
     Chart1->AddSeries(NewSeries);
     NewSeries->Active=true;
     NewSeries->SeriesColor = Col[i]; 
     NewSeries->LinePen->Width=4;
     NewSeries->XValues->DateTime=false;
     NewSeries->XValues->Order=loNone;
     NewSeries->YValues->DateTime =false;
     NewSeries->YValues->Order=loNone ;
     NewSeries->VertAxis=aLeftAxis;
     NewSeries->Tag=i;
     Chart1->Series[i]->Active=true;

}

for(int i=0; i < Chart1->SeriesCount(); i++)
 {
  Chart1->Series[i]->AddXY(x[i],y[i],"",clRed );
 }

Здесь в приведенном коде для одного графика. В легенде появляется Series0, а самого графика не видно, хотя масштаб осей изменяется. Может я какие-то не те свойства поставил?! Подскажите, пожалуйста, что не так. 

Автор: Annihilator 11.5.2008, 19:02
вот так проще
Код

{
    const int graph_quan=10;
    int n;
    TFastLineSeries **line;
    line = new TFastLineSeries*[graph_quan];
    for (int i = 0; i < graph_quan; i++)
    for (n = 1; n <= graph_quan; n++)
    {
        line[n]= new TFastLineSeries(Chart1);
        Chart1->AddSeries(line[n-1]);
        for(int i = 0; i < 1000; i++)
        Chart1->Series[n-1]->AddXY((double)i,1/  pow(1+pow((double)i/200,2*(double)n),0.5),"",clRed);
    }
}

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)