1 pièce(s) jointe(s)
courbe à partir de mesures grace à Tcanvas
Bonjour, je fais une acquisition de donnée via une laison GPIB.
ces données sont stockées dans une matrice et j'aimerais tracer dans une Timage la courbe correspondante.
je me rends compte que la courbe obtenue ne présente que l'allure de celle désirée mais pas la courbe exacte.
le code est le suivant:
----------------------------------------------------------------------------------
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49
| void Dessine()
{
int X0,Y0,X,Y,X_max,Y_max,Y_size;
float Id_max=0.001;
float Id_min=100;
// dessin du graphique
Form1->Image2->Canvas->Pen->Color=clBlack;
Form1->Image2->Canvas->Brush->Color=clWhite;
Y_size = ( Form1->Height - 300)/2;
X0 = 20;
X_max=Form1->Width-2*X0;
Y0=(Form1->Height/2 + 20);
Y_max=Y0-Y_size;
Form1->Image2->Canvas->Rectangle(X0-10,Y_max-10,X_max+10,Y0+10);
Form1->Image2->Canvas->MoveTo(X0,Y0);
// determination du maximum pour l'echele des y
for (int i=0;i<100;i++)
{
if ((tab[1][i])>Id_max){Id_max=tab[1][i];};
if ((tab[1][i])<Id_min){Id_min=tab[1][i];};
}
//creation des axes
Form1->Image2->Canvas->MoveTo(X0-5,Y0);
Form1->Image2->Canvas->LineTo(X_max,Y0);
Form1->Image2->Canvas->MoveTo(X0,Y0+5);
Form1->Image2->Canvas->LineTo(X0,Y_max);
for (int i=0;i<100;i++)
{
X=(tab[0][i])*100/(Form1->Width-40);
Y=(tab[1][i])*Id_max/(Form1->Height-50);
Form1->Image2->Canvas->LineTo(X0+X,Y0-Y);
}
// dessin du diagramme proprement dit
Form1->Image2->Canvas->Pen->Color=clRed;
Form1->Image2->Canvas->MoveTo(X0,Y0-tab[1][0]*Y_max/Id_max);
for (int i=0;i<100;i++)
{
Form1->Image2->Canvas->LineTo(X0+i*X_max/100,Y0-(tab[1][i]*Y_max/Id_max));
} |
-------------------------------------------------------------------------------
le résultat obtenu se trouve en PJ
une image de la courbe souhaité y est aussi.
Comment faire pour avoir des axes dynamiques avec des graduations??
merci d'avance.