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

MFC Discussion :

[MFC][débutante]tracer une courbe à partir d'un tableau


Sujet :

MFC

  1. #1
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    1
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 1
    Points : 1
    Points
    1
    Par défaut [MFC][débutante]tracer une courbe à partir d'un tableau
    Bonjour,
    je réalise un interface qui me permet de tracé des données issues de la liaison série. J'arrive à récupérer ces données dans un tableau de la forme
    tab[i][j] mais je n'arrive pas à tracer ces données dans un rectangle de ma boite de dialogue.
    Quelqu'un saurait-il comment faire ?

    merci d'avance

    Lisou31

  2. #2
    Membre du Club
    Inscrit en
    Septembre 2002
    Messages
    49
    Détails du profil
    Informations forums :
    Inscription : Septembre 2002
    Messages : 49
    Points : 50
    Points
    50
    Par défaut
    initialiser votre stylo (CPen) ) apres essai de dessiner
    je me souviens pas cherche dans le msdn dans ce sense

  3. #3
    mat.M
    Invité(e)
    Par défaut
    Toutes les semaines on dirait qu'on a la même question : comment tracer une courbe à partir d'un tableau ?
    faire une recherche sur le forum VC++
    sinon placer du code de tracé graphique dans la méthode CDialog::OnPaint qui fournit un CDC
    Rafraichir avec Invalidate

  4. #4
    Membre averti

    Profil pro
    Étudiant
    Inscrit en
    Décembre 2004
    Messages
    499
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2004
    Messages : 499
    Points : 422
    Points
    422
    Par défaut
    salut, je suis développeur pro, et j'aimerais trouver un exemple minimaliste pour dessiner une courbe en MFC à partir de points, donc si tu as déjà vu le code qui répond parfaitement à la question, mets son lien ! parce que ce topic il est classé numéro 1 sur google avec "dessiner courbe mfc"

  5. #5
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 381
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 381
    Points : 41 582
    Points
    41 582
    Par défaut
    Alors le principe, c'est de dessiner ton tableau durant le OnPaint(), en stockant les valeur en mémoire, et en appelant CWnd::Invalidate() quand ces valeurs changent (pour les faire repeindre).

    Voici un exemple de code qui normalement devrait dessiner une courbe sur toute la surface de la CWnd (ici un contrôle dédié), dépendant de trois variables:
    m_tableau: Le tableau contenant les données
    m_valeurMaximale: Le max de Y à afficher: Peut être en fait supérieur à la vraie plus haute valeur dans le tableau.
    m_nombreValeurs: La longueur du tableau.
    Je préviens, ce n'est ni compilé ni testé.
    Code C++ : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    void CMonControleGraphe::OnPaint()
    {
    	CPaintDC dc(this);
    	RECT r;
    	this->GetClientRect(&r);
     
    	int y0 = (double)m_tableau[0] * r.bottom / m_valeurMax;
    	dc.MoveTo(0, r.bottom - y0);
    	for(int i=1 ; i<m_nombreDonnees ; i++)
    	{
    		int xi = (double)i * r.right / (m_nombreDonnees-1);
    		int yi = (double)m_tableau[i] * r.bottom / m_valeurMax;
    		dc.LineTo(xi, yi);
    	}
    }
    Régler la couleur (et surtout le faire de manière exception-safe) peut être plus compliqué, à cause de SelectObject(). Normalement, il faudrait faire un truc de ce genre, mais ce n'est pas exception-safe; il faudrait rajouter une classe pour ça:
    Code C++ : 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
    void CMonControleGraphe::OnPaint()
    {
    	CPaintDC dc(this);
    	CPen redPen(PS_SOLID, 0, RGB(255, 0, 0);
    	CPen* pOldPen = dc.SelectObject(&redPen);
    	RECT r;
    	this->GetClientRect(&r);
     
    	int y0 = (double)m_tableau[0] * r.bottom / m_valeurMax;
    	dc.MoveTo(0, r.bottom - y0);
    	for(int i=1 ; i<m_nombreDonnees ; i++)
    	{
    		int xi = (double)i * r.right / (m_nombreDonnees-1);
    		int yi = (double)m_tableau[i] * r.bottom / m_valeurMax;
    		dc.LineTo(xi, yi);
    	}
    	dc.SelectObject(pOldPen);
    }

  6. #6
    Expert éminent sénior
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    5 179
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2005
    Messages : 5 179
    Points : 12 311
    Points
    12 311
    Par défaut
    Enfin, bon, un développeur "pro" qui ne sait pas faire ça, c'est clairement du pro de pochette surprise.

Discussions similaires

  1. tracer une courbe à partir d'un tableau
    Par Antoineba dans le forum Interfaces Graphiques en Java
    Réponses: 3
    Dernier message: 29/04/2010, 16h34
  2. tracer une courbe à partir d'un fichier txt
    Par defcom60 dans le forum Calcul scientifique
    Réponses: 54
    Dernier message: 18/07/2008, 10h16
  3. Tracer une courbe à partir d'un bloc note
    Par autoin dans le forum MATLAB
    Réponses: 2
    Dernier message: 09/05/2008, 19h25
  4. tracer une courbe à partir d'un fichier texte
    Par Kemanke dans le forum MFC
    Réponses: 12
    Dernier message: 18/07/2007, 10h51
  5. [Débutant] Tracer une courbe main levée
    Par L8O8L dans le forum AWT/Swing
    Réponses: 3
    Dernier message: 01/05/2007, 19h26

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