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 :

Visualiser des courbes avec VC++6


Sujet :

MFC

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 3
    Par défaut Visualiser des courbes avec VC++6
    Bonjour,

    Dans le cadre de mon stage, je dois récupérer des données depuis une application HDL ciblé sur Virtex 4 pour tracer des courbes. Pour cela, j'utilise un timer pour envoyer une requête de lecture à intervalle de temps fixe. Je récupère ainsi les coordonnées (x,y) d'un seul point et je le trace.Cependant, à chaque fois que je fais appel à la fonction OnPaint, toute le contenu qui est déjà tracé s'efface. Donc, j'ai due sauvegarder les coordonnées des points dans un tableau et le re-parcourir à chaque rafraîchissement de mon dessin. Le problème est que cette solution a beaucoup ralenti l'exécution de mon programme alors que j'ai des contraintes de temps réel au niveau du design HDL. Est ce qu'il y' a un moyen de tracer au fur et mesure ma courbe sans pour autant être obligé de passer par un tableau?

    Merci pour vos réponses.

  2. #2
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    5 463
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Val de Marne (Île de France)

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

    Informations forums :
    Inscription : Février 2005
    Messages : 5 463
    Par défaut
    Vous devez toujours être à même de régénérer tout votre affichage, il faut donc toujours avoir les données nécessaire à l'affichage courant.
    Mais il ne faut pas régénérer tout votre affichage tout le temps.
    Quand vous devez modifiez une partie de l’affichage, n'invalider que la partie de l’interface qui a changé et non toute la fenêtre.
    Pensez à utiliser des structures bitmap en mémoires pour éviter des recalcules.

    Votre question est vague et le nombre d'optimisation est sans limites.

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 3
    Par défaut
    en effet, j'utilise plusieurs onglets pour les différentes courbes à visualiser.

    Au niveau de chaque onglet, je récupère le context device et je crée un rectangle de la manière suivante:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    CWnd* graphWnd = pDC->GetWindow();
    CRect BerRect;
    graphWnd->GetClientRect(&BerRect);
    pDC->Rectangle(0, 0, BerRect.Width(), BerRect.Height());
    et j'utilise les fonction LineTo et MoveTo pour tracer la courbe.

    Le traçage se fait à l'intérieur du rectangle. Le problème est que lorsque je fais appelle à la fonction Invalidate dans ma fonction OnTimer, c'est tout le contenu du rectangle qui est mis à jour. Ce que je veux moi est de trouver un moyen qui me permet à intervalle de temps fixe d'ajouter un nouveau point sans avoir à redessiner les anciens.

    J'espère que j'étais un peu clair dans mon explication.

  4. #4
    Rédacteur

    Avatar de ram-0000
    Homme Profil pro
    Consultant en sécurité
    Inscrit en
    Mai 2007
    Messages
    11 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant en sécurité
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2007
    Messages : 11 517
    Par défaut
    Et en écrivant dans un bitmap, cela ne serait pas plus rapide.

    Tu fait ton dessin dans le bitmap au fur et a mesure que les points arrivent, tu peux comme cela oublier les anciens points.

    Lors du WM_PAINT, tu "colles" ton bitmap sur ta view

    Un exemple ici : http://www.winprog.org/tutorial/bitmaps.html
    Raymond
    Vous souhaitez participer à la rubrique Réseaux ? Contactez-moi

    Cafuro Cafuro est un outil SNMP dont le but est d'aider les administrateurs système et réseau à configurer leurs équipements SNMP réseau.
    e-verbe Un logiciel de conjugaison des verbes de la langue française.

    Ma page personnelle sur DVP
    .

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 3
    Par défaut
    ça fonctionne bien avec les bitmap. C'est beaucoup plus rapide. Merci pour votre aide les experts.

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

Discussions similaires

  1. [Débutant] Tracer des courbes avec le compact framework
    Par spfo dans le forum Général Dotnet
    Réponses: 0
    Dernier message: 06/12/2013, 08h56
  2. [Débutant] Tracer des courbes avec asp.net
    Par salmia22 dans le forum ASP.NET MVC
    Réponses: 0
    Dernier message: 25/07/2013, 20h55
  3. Tracer des courbes avec Gnuplot
    Par shadow07 dans le forum Linux
    Réponses: 0
    Dernier message: 26/02/2011, 20h48
  4. Tracer des courbes avec TeXShop (Mac) ?
    Par osirisdelos dans le forum Tableaux - Graphiques - Images - Flottants
    Réponses: 2
    Dernier message: 14/10/2009, 05h48
  5. Dessiner des Courbes avec extjs
    Par bj304075 dans le forum Ext JS / Sencha
    Réponses: 1
    Dernier message: 28/05/2009, 14h42

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