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 :

Effacement ancienne courbe + mise a jour auto


Sujet :

GTK+ avec C & C++

  1. #1
    Membre éprouvé Avatar de Flow_75
    Femme Profil pro
    Ingénieure
    Inscrit en
    Mai 2005
    Messages
    1 100
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieure
    Secteur : Transports

    Informations forums :
    Inscription : Mai 2005
    Messages : 1 100
    Par défaut Effacement ancienne courbe + mise a jour auto
    Bonjour,

    J'ai trouvé comment faire une courbe sous Cairo.
    Seulement, les anciennes courbes restent et donc surchargent la fenetre.
    Comment les effacer ?

    Egalement à ce sujet.

    Je remarque que la courbe s'affiche seulement quand je passe la souris sur la fenetre... comment l'afficher automatiquement.

    sachant que j'ai fait un thread pour recuperer une trame de données sur le port série, et dans ce meme thread, utilise les fonction de Cairo ( et non de pomme de terre) pour y afficher les données recues....

    Merci de votre aide.
    Florent

  2. #2
    Rédacteur

    Avatar de gege2061
    Femme Profil pro
    Administrateur de base de données
    Inscrit en
    Juin 2004
    Messages
    5 840
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Juin 2004
    Messages : 5 840
    Par défaut
    Bonjour,

    Citation Envoyé par Flob91 Voir le message
    J'ai trouvé comment faire une courbe sous Cairo.
    Seulement, les anciennes courbes restent et donc surchargent la fenetre.
    Comment les effacer ?

    Egalement à ce sujet.

    Je remarque que la courbe s'affiche seulement quand je passe la souris sur la fenetre... comment l'afficher automatiquement.
    Tu dessine sur un widget, je suppose, pour afficher la courbe ? Si c'est le cas, il faut dessiner en réponse à l'événement expose-event qui est appeler à chaque fois que la surface à besoin d'être redessinée.

    Et, de ce que j'ai pu voir, tu créée une nouvelle surface à chaque fois, donc pas besoin de l'effacer.

    Si ça peux t'aider voici deux tutoriels sur cairo (je pense que le premier te suffira) :
    Writing a Widget Using Cairo and GTK+2.8
    Writing a Widget Using Cairo and GTK+2.8, Part 2

  3. #3
    Membre éprouvé Avatar de Flow_75
    Femme Profil pro
    Ingénieure
    Inscrit en
    Mai 2005
    Messages
    1 100
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieure
    Secteur : Transports

    Informations forums :
    Inscription : Mai 2005
    Messages : 1 100
    Par défaut
    en faite, c'est sur la fenetre brut que je dessine.

    en faite, c'est une courbe que je dessine depuis des données.
    Ces données sont rafraichient toutes les 1 ou X secondes.

    donc comment faire cela ?

    pour le signal, je connect l'evenement "expose-event" à un Cb dans lequel j'affiche ma courbe.

    C'est cela ?

    merci de ton aide.

  4. #4
    Membre éprouvé Avatar de Flow_75
    Femme Profil pro
    Ingénieure
    Inscrit en
    Mai 2005
    Messages
    1 100
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieure
    Secteur : Transports

    Informations forums :
    Inscription : Mai 2005
    Messages : 1 100
    Par défaut
    Bon,,, je mets les dernieres nouvelles concernant mon projet.

    J'arrive à afficher une courbe et à l'effacer lorsque de nouvelles données arrivent.
    Mais je dois toujours avoir la souris passante devant la fenetre pour mettre à jour la courbe ....:-/

  5. #5
    Membre Expert
    Homme Profil pro
    Inscrit en
    Janvier 2005
    Messages
    1 259
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 259
    Par défaut
    Citation Envoyé par Flob91 Voir le message
    sachant que j'ai fait un thread pour recuperer une trame de données sur le port série, et dans ce meme thread, utilise les fonction de Cairo ( et non de pomme de terre) pour y afficher les données recues....
    C'est mal de faire ça, ton problème de réaffichage uniquement quand tu passes la souris vient de là.

    Je t'invite à lire très (très) attentivement http://library.gnome.org/devel/gdk/s...k-Threads.html

  6. #6
    Membre éprouvé Avatar de Flow_75
    Femme Profil pro
    Ingénieure
    Inscrit en
    Mai 2005
    Messages
    1 100
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieure
    Secteur : Transports

    Informations forums :
    Inscription : Mai 2005
    Messages : 1 100
    Par défaut
    En faite, j'ai mis les lignes d'affichage de cairo dans le callback "Expose Event"

    Donc quand j'ai toute les données, j'invalide la fenetre, et je demande un redessinage de celle ci avec les nouvelles données.

  7. #7
    Membre Expert
    Homme Profil pro
    Inscrit en
    Janvier 2005
    Messages
    1 259
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 259
    Par défaut
    Citation Envoyé par Flob91 Voir le message
    Donc quand j'ai toute les données, j'invalide la fenetre, et je demande un redessinage de celle ci avec les nouvelles données.
    Et tu fais cette invalidation et demande de redessinage depuis quel thread?

  8. #8
    Membre éprouvé Avatar de Flow_75
    Femme Profil pro
    Ingénieure
    Inscrit en
    Mai 2005
    Messages
    1 100
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieure
    Secteur : Transports

    Informations forums :
    Inscription : Mai 2005
    Messages : 1 100
    Par défaut
    Citation Envoyé par teuf13 Voir le message
    Et tu fais cette invalidation et demande de redessinage depuis quel thread?
    Depuis celui où je récolte les données.

  9. #9
    Membre Expert
    Homme Profil pro
    Inscrit en
    Janvier 2005
    Messages
    1 259
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 259
    Par défaut
    Donc tu fais des appels à gtk+ depuis un thread qui n'est pas ton thread principal (celui où tourne la mainloop), donc on retombe sur ce que le lien que je t'ai donné dit qu'il ne faut pas faire sans prendre de précautions... Fais un g_idle_add dans ton thread de collecte de données, et fais l'invalidation depuis le callback de ce g_idle_add, ça devrait être un premier pas dans la bonne direction.

  10. #10
    Membre éprouvé Avatar de Flow_75
    Femme Profil pro
    Ingénieure
    Inscrit en
    Mai 2005
    Messages
    1 100
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieure
    Secteur : Transports

    Informations forums :
    Inscription : Mai 2005
    Messages : 1 100
    Par défaut
    Bon c'est un peu mieux....
    sauf que ca rafraichie tout le temps à des intervales très courts.....

    Merci.

  11. #11
    Membre éprouvé Avatar de Flow_75
    Femme Profil pro
    Ingénieure
    Inscrit en
    Mai 2005
    Messages
    1 100
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieure
    Secteur : Transports

    Informations forums :
    Inscription : Mai 2005
    Messages : 1 100
    Par défaut
    Bon, j'ai rectifié.
    J'ai mis g_idle_add lorsque je veux invalidé la fenetre et le callback correspondant retourne FALSE
    Donc ca le fait bien....

    Merci de ton aide.

  12. #12
    Modérateur

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2009
    Messages
    1 395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Juin 2009
    Messages : 1 395
    Par défaut
    Ton thread est chargé de récupérer les données, peu importe la vitesse d'acquisition. Sa seule activité une fois cela fait, est de passer ces données au thread principal. Il n'y a rien a dessiner dans ce thread.

    Ensuite, dans le thread principal, dans la callback du "expose-event", tu te contentes de lire le dernier lot de données reçu et de le dessiner.

  13. #13
    Membre éprouvé Avatar de Flow_75
    Femme Profil pro
    Ingénieure
    Inscrit en
    Mai 2005
    Messages
    1 100
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieure
    Secteur : Transports

    Informations forums :
    Inscription : Mai 2005
    Messages : 1 100
    Par défaut
    Bon, dernier probleme concernant l'affichage.

    C'est que quand je la deplace hors de l'écran, la courbe ne se redessine pas correctement... Je ne vois pas le 'truc'.

    Merci d'avance.
    Flo

  14. #14
    Membre éprouvé Avatar de Flow_75
    Femme Profil pro
    Ingénieure
    Inscrit en
    Mai 2005
    Messages
    1 100
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieure
    Secteur : Transports

    Informations forums :
    Inscription : Mai 2005
    Messages : 1 100
    Par défaut
    Citation Envoyé par liberforce Voir le message
    Ton thread est chargé de récupérer les données, peu importe la vitesse d'acquisition. Sa seule activité une fois cela fait, est de passer ces données au thread principal. Il n'y a rien a dessiner dans ce thread.

    Ensuite, dans le thread principal, dans la callback du "expose-event", tu te contentes de lire le dernier lot de données reçu et de le dessiner.
    merci de ta réponse.

    Mais avant de répondre, lis ce qui a été mis avant.
    Car au final, c'est ce que j'ai fais et marqué.

  15. #15
    Modérateur

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2009
    Messages
    1 395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Juin 2009
    Messages : 1 395
    Par défaut
    Citation Envoyé par Flob91 Voir le message
    merci de ta réponse.

    Mais avant de répondre, lis ce qui a été mis avant.
    Car au final, c'est ce que j'ai fais et marqué.
    Merci de comprendre mieux que moi ce que je dis... Si tu fais l'invalidation de la zone à redessiner directement dans ton thread d'acquisition de données (ce que te disait teuf), c'est que tu n'as rien compris à ce que j'ai écrit.

    De plus à ta place j'utiliserais g_timeout_add plutôt que g_idle_add si ton but est de contrôler le rafraichissement et sa régularité (toutes les n millisecondes par exemple). Si par contre ta contrainte est "le plus vite possible", alors g_idle add est le bon choix.

Discussions similaires

  1. [XL-2010] Mise a jour Auto Excel pour Diapo PowerPoint Autonome
    Par nexus32 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 01/12/2011, 05h01
  2. CRM mise a jour auto produits
    Par Jerome2606 dans le forum Microsoft Dynamics CRM
    Réponses: 9
    Dernier message: 28/02/2011, 16h53
  3. [AC-2007] Mise a jour auto d'un attribut.
    Par IMPRO dans le forum Access
    Réponses: 2
    Dernier message: 22/06/2010, 00h01
  4. [XL-2007] Mise a jour auto d'une page Excel ?
    Par didier.007 dans le forum Excel
    Réponses: 2
    Dernier message: 07/06/2009, 13h06
  5. Empecher la mise a jour auto d'une table
    Par SnakeCharmer dans le forum IHM
    Réponses: 2
    Dernier message: 03/04/2008, 15h04

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