IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++Builder Discussion :

graphe en utilisant un StringGrid et un Tchart


Sujet :

C++Builder

  1. #1
    Rédacteur
    Avatar de blondelle
    Homme Profil pro
    Inscrit en
    Mars 2006
    Messages
    2 738
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 738
    Par défaut graphe en utilisant un StringGrid et un Tchart
    J'ai une serie de coordonnees dans un StringGrid si j'utilise le composant Tchart, sur le graphe est-ce que je vais pouvoir modifier l'epaisseur du trait et sa couleur.
    Est-ce que je vais pouvoir le zoomer pour ajuster sa dimension a celle d'un autre graphe deja existant et l'imprimer dans cette nouvelle dimension.
    Est-ce qu'un code de ce genre est correct pour charger la Serie.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    for (int i=0;i<StringGrid1->RowCount;i++)
    Series1->AddXY(StringGrid1->Cells[1][i], StringGrid1->Cells[2][i], "", (TColor)0);

  2. #2
    Membre émérite
    Avatar de bandit boy
    Profil pro
    Inscrit en
    Février 2006
    Messages
    916
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 916
    Par défaut
    Salut blondelle
    ton code est correct pour charger ta série. Tu peux aussi faire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Chart1->Series[0]->Add(StringGrid1->Cells[1][i], StringGrid1->Cells[2][i], "", (TColor)0);
    Si tu veux modifier la couleur du trait, il faut faire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Series1->LinePen->Color = clLime;
    Pour l'épaisseur, il faut faire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Series1->LinePen->Width = 2;
    Mais attention, si tu touche au style, le "SmallDots" ne fonctionne que pour une épaisseur de 1;

    Lorsque tu fait un zoom sur le TChart, lépaisseur du trait ne change pas, uniquement les coordonnées Min et Max de BottomAxis et LeftAxis. Ton trait ne prendra pas plus de place comme lorsque tu zoom une photo, le TChart est redessiné.

  3. #3
    Rédacteur
    Avatar de blondelle
    Homme Profil pro
    Inscrit en
    Mars 2006
    Messages
    2 738
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 738
    Par défaut
    Merci pour ta reponse bandit boy
    apres essai le composant ne convient pas pour ce que je projette je vais essayer soit avec un Timage soit un TpaintBox je met un resolu

  4. #4
    Membre émérite
    Avatar de bandit boy
    Profil pro
    Inscrit en
    Février 2006
    Messages
    916
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 916
    Par défaut
    Qu'est ce que tu cherches à faire au juste ?

  5. #5
    Rédacteur
    Avatar de blondelle
    Homme Profil pro
    Inscrit en
    Mars 2006
    Messages
    2 738
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 738
    Par défaut
    C'est toujours en rapport avec mon StringGrid j'ai des coordonnees X, Y d'un Gps transformees en coordonnees lambert pour cartes IGN je voudrais tracer le circuit correspondant a ces coordonnees et qui devront etres supperposables sur une carte IGN apparament le Tchart est fait pour des courbes de statistiques.
    J'ai fait quelques testes avec une TPaintBox si je part la dessus je ferais un autre post.

  6. #6
    Membre émérite
    Avatar de bandit boy
    Profil pro
    Inscrit en
    Février 2006
    Messages
    916
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 916
    Par défaut
    Ce que je peux te conseiller est alors de charger ta carte IGN en temps que Bitmap (ou jpeg) et de travailler sur le Canvas de cette image et ainsi par exemple tracer en rouge des lignes entre les différents points contenu dans ta StringGrid.
    Tu as la méthode :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    int i;
    TPoint Debut;
    Debut.x = StrToInt(StringGrid1->Cells[1][0]);
    Debut.y = StrToInt(StringGrid1->Cells[2][0]);
    Image1->Canvas->PenPos = Debut;  //place le Crayon au point de départ
     
    for (i=1;i<StringGrid1->RowCount;i++) //trace des lignes de point en point
        Image1->Canvas->LineTo(StrToInt(StringGrid1->Cells[1][i]), StrToInt(StringGrid1->Cells[2][i]));
    Ca m'a permis de voir une petite boulette de ton code qui est que la cellule d'une StringGrid est une AnsiString, alors qu'un TChart demande un double (ou un chiffre).
    De plus tu peux modifier la couleur du crayon et son épaisseur:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Image1->Canvas->Pen->Width = 2;
    Image1->Canvas->Pen->Color = clLime;
    L'inconvénient est que tu ne peux pas zoomer ce Canvas, il te faudra le refaire si tu souhaites zoomer sur une partie de ta carte.

    En éspérant que cette solution te convient. Si tu souhaites d'autres informations, je reste dispo

  7. #7
    Rédacteur
    Avatar de blondelle
    Homme Profil pro
    Inscrit en
    Mars 2006
    Messages
    2 738
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 738
    Par défaut
    merci pour ta reponse bandit boy
    bandit boy a ecrit:

    Ce que je peux te conseiller est alors de charger ta carte IGN en temps que Bitmap (ou jpeg) et de travailler sur le Canvas de cette image et ainsi par exemple tracer en rouge des lignes entre les différents points contenu dans ta StringGrid.
    Je n'ai pas besoin de la carte a l'ecran les circuits vont etre imprimes sur transparants et superposes sur la carte ceci afin d'optimiser des circuits de distribution et eviter que ces differents circuits s'entrecroisent.
    Les calculs executes dans le StringGrid normalement devraient donner des circuits superposable sans retouche sur la carte
    J'avais teste ceci sur un TpaintBox mais cela ne marche que sur la partie visible a l'ecran.
    le code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
     
    void __fastcall TForm1::Button5Click(TObject *Sender)
    {
    double a;
    double b;
    double c;
    double d;
    int j;
            StringGrid1->Visible = false;
            PaintBox1->Visible = true;
            PaintBox1->Canvas->Pen->Color = clRed;
            PaintBox1->Canvas->Pen->Width = 2;
    for (j = 2; j < StringGrid1->RowCount - 1; j++)
    {
            a = StringGrid1->Cells[14][j].ToDouble();
            b = StringGrid1->Cells[13][j].ToDouble();
            c = StringGrid1->Cells[14][j + 1].ToDouble();
            d = StringGrid1->Cells[13][j + 1].ToDouble();
     
      PaintBox1->Canvas->MoveTo(a, b);
      PaintBox1->Canvas->LineTo(c,d);  // X,Y
    }
    }
    //---------------------------------------------------------------------------
     
    void __fastcall TForm1::Button6Click(TObject *Sender)
    {
            StringGrid1->Visible = true;
            PaintBox1->Visible = false;
    }
    La il y a le probleme de la partie qui s'efface a l'ecran et une fois encore l'impression papier.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [AC-2003] modifier un graph en utilisant MsGraph DataSheet
    Par ometsoc dans le forum VBA Access
    Réponses: 1
    Dernier message: 27/10/2010, 20h51
  2. Théorie des graphes et utilisation
    Par Invité dans le forum Ada
    Réponses: 0
    Dernier message: 31/03/2010, 13h13
  3. Boost.Graph : Comment utiliser tout ça?
    Par Xanto dans le forum Boost
    Réponses: 1
    Dernier message: 08/05/2009, 19h48
  4. Utiliser un Stringgrid
    Par codepvc dans le forum Débuter
    Réponses: 8
    Dernier message: 06/03/2009, 19h38
  5. graphe en utilisant un StringGrid et un TImage
    Par blondelle dans le forum C++Builder
    Réponses: 7
    Dernier message: 07/07/2006, 20h14

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo