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

GTK+ avec C & C++ Discussion :

Rafraîchissement courbe GTK+ "en live"


Sujet :

GTK+ avec C & C++

  1. #1
    Membre régulier
    Inscrit en
    Décembre 2007
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 8
    Par défaut Rafraîchissement courbe GTK+ "en live"
    Bonjour,

    J'ai créé un programme en C utilisant GTK+.
    Il récupère des données (float) d'un programme externe et a pour but de les afficher en live : dans un label et sur une courbe.
    Pour le label, j'ai réussi à faire un rafraichissement en live grâce à la fonction
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    gtk_widget_draw(GTK_WIDGET(win), NULL);
    redessine la fenêtre win à chaque nouveau float récupéré.
    Pour la courbe, j'utilise la fonction
    gdk_draw_lines(pixmap, aire_de_dessin->style->black_gc, pt,LENGTH);
    Je la test dans la boucle que voici

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    int i;
      GdkPoint pt[LENGTH];
      for (i=0;i<LENGTH-1;i++)
      {
          pt[i].x=i;
          pt[i].y=480*i/640;
          gdk_draw_lines(pixmap, aire_de_dessin->style->black_gc, pt,LENGTH);
      }
    Mon problème est le suivant, la courbe ne s'affiche que dans son état final (pour le test), aulieu de se déssiner point par point à l'écran comme je le souhaiterai.
    J'ai tenté d'utiliser la même fonction que pour le label en redessinant l'aire de dessin mais celà ne fonctionne pas...

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    176
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 176
    Par défaut
    Salut, le problème est qu'avec la boucle le temps d'execution est si faible que tu ne vois que le résultat final.

    La solution est d'utiliser un timer qui va appeler ta fonction qui utilise gdk_draw_lines() toutes les x millisecondes ( mais il faudra donc enlever la boucle et ne dessiner qu'un seul point )

    Tu utilise le timer avec la fonction :
    g_timeout_add(x ms, fonction à appeler , paramètres à lui passer )

    Grace à ça ta fonction sera appelée toutes les x millisecondes tant que la fonction retourne TRUE ou 1. Si elle retourne 0 ou FALSE le timer sera détruit.

Discussions similaires

  1. Quote et double quote
    Par aktos dans le forum Langage
    Réponses: 8
    Dernier message: 05/01/2007, 19h55

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