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

Delphi Discussion :

Aide sur le Tcanvas


Sujet :

Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Février 2007
    Messages
    67
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 67
    Par défaut Aide sur le Tcanvas
    Bonjour à tous. Voilà le but du programme est de tracer certaines fonctions ususelles dans un Tpanel à l'aide de la propriété Tcanvas.

    Mes points sont calculés (abscisse et ordonné) et sont inscrits dans un StringGrid (je n'ai pas fait de tableau) mais après je ne sais absolument pas me servir du Tcanvas, je connais quelques propriétés genre Canvas1.MoveTo ou LineTo etc mais là je ne sais pas faire l'association avec mes points précédemment définis dans les StringGrid.

    Merci d'avance de vos réponses. ++

  2. #2
    Expert confirmé
    Avatar de anapurna
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    3 493
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 493
    Par défaut
    salut

    ce n'est pas tres dificile
    ton tableaux(stringgrid) possede surement deux colonne ?

    selon tes valeur il va faloir trouver une echelle pour dessinner

    par exemple si ton panel fait 10 de long
    et que tes valeur maximale sont de l'ordre de 100
    alors ton echelle sera de 10/100

    ensuite line to dessinne une droite a partir d'ou il se trouve j'usquau point indiquer

    imaginons que tu commence à (10;10) et ensuite ta valeur est (50;25)
    alors pour la premiere valeur il te faudra faire un moveto(10,10) le cursuer ne se dessinne pas mais se place en (10;10) est ensuite tu fait une lineto(50,25)
    tu auras donc un trait partant de (10;10) et allant jusque (50;25)

    @+ Phil

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Février 2007
    Messages
    67
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 67
    Par défaut
    Merci à toi je vais essayer ce que tu m'as dit. mais si je veux tracer une courbe genre avec 20 points je réitère 20 fois cette manip?

    Merci encore.++

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Février 2007
    Messages
    67
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 67
    Par défaut
    Bon je fais ce que je pensais genre pour la fonction carré :

    Canvas1.MoveTo(104,96);
    Canvas1.LineTo(1,1);
    Canvas1.MoveTo(1,1);
    Canvas1.LineTo(2,4);
    Canvas1.MoveTo(2,4);
    Canvas1.LineTo(3,9);

    Mais ce n'est pas terrible du tout c'est même très nul. Et après j'ai de toute façon le même problème car j'ai plus de 6 fonctions et à chaque fois je veux un minimum de 20 points donc si quelqu'un peut m'aider.

    Je sais qu'on peut aussi utiliser le Tchart mais moi dans le Delphi 6 que j'ai je ne l'ai pas.

    Merci encore.

  5. #5
    Expert confirmé
    Avatar de anapurna
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    3 493
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 493
    Par défaut
    salut

    tu peut utilise polyligne si tu veut
    c'est un tableau de point a passer en paramettre

    sinon pour ton code je le verrai deja plus comme cela
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    var
     x,y : integer;
    begin
      x := 104;
      y := 96;
      Canvas1.MoveTo(x ,y);
      for i := 0 to nbPt do 
      begin
        x := x+1;
        y := LstPt[i].y;
        Canvas1.LineTo(x,y);
      end; 
    end;
    avec peut etre une amelioration pour definir le y a l'echelle du graph

    @+ Phil

  6. #6
    Modérateur

    Homme Profil pro
    Ingénieur retraité
    Inscrit en
    Octobre 2005
    Messages
    2 396
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur retraité

    Informations forums :
    Inscription : Octobre 2005
    Messages : 2 396
    Par défaut
    A0080 tu dis :

    Mais ce n'est pas terrible du tout c'est même très nul.
    On peut faire difficilement mieux si le nombre de points est limité à 20.

    Par contre puisque tu veux tracer les courbes de fonctions continues du genre y=f(x), au lieu de récupérer les valeurs x,y dans ta stringrid, il vaut mieux calculer la valeur de y=f(x) dans une boucle du style for x'=0 to Srceen.Width do ... cela donnera à la courbe un nombre de points égal Srceen.Width c'est à dire une meilleure allure.
    Il est judicieux aussi de déclarer des coefficients de proportionnalité (échelles) du genre x'=kx*x et y'=ky*y où x' et y' représentent les coordonnées-écran et x et y les valeurs numériques de la fonction cela permet d'ajuster la courbe à l'écran comme si on faisait un zoom.

    Et si la stringrid ne donne que 20 points il n'est pas interdit de tracer sur la courbe des petits traits verticaux qui marquent la correspondance avec le contenu de la stringrid.

    Y'a-plus-qu'à.
    N'oubliez pas de consulter les FAQ Delphi et les cours et tutoriels Delphi

  7. #7
    Membre émérite
    Profil pro
    Inscrit en
    Février 2006
    Messages
    624
    Détails du profil
    Informations personnelles :
    Âge : 50
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 624
    Par défaut
    Le stringgrid est bien pour l'édition de données mais pour alimenter le Canvas, sers toi plutôt d'une liste de points.(après avoir enregistrer le contenu de la grille dans une liste).
    Cela te permet d'avoir un algo disons plus conventionnel sans avoir avoir à manipuler les coordonnées d'une grille.

    Bon courage.

    @+

Discussions similaires

  1. demande d'aide sur samba
    Par marcoss dans le forum Développement
    Réponses: 5
    Dernier message: 04/12/2003, 19h38
  2. [CR] besoin d'aide sur les formules
    Par GuillaumeDSA dans le forum Formules
    Réponses: 4
    Dernier message: 10/07/2003, 12h19
  3. Réponses: 2
    Dernier message: 27/02/2003, 01h33
  4. [Kylix] Aide sur BitBlt
    Par mic006 dans le forum EDI
    Réponses: 1
    Dernier message: 10/12/2002, 22h54
  5. Aide sur une fenetre
    Par Ray-j dans le forum Autres éditeurs
    Réponses: 4
    Dernier message: 29/11/2002, 08h51

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