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 :

Redessiner une partie d'un GtkDrawingArea


Sujet :

GTK+ avec C & C++

  1. #1
    Expert confirmé
    Avatar de gerald3d
    Homme Profil pro
    Conducteur de train
    Inscrit en
    Février 2008
    Messages
    2 308
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Conducteur de train
    Secteur : Transports

    Informations forums :
    Inscription : Février 2008
    Messages : 2 308
    Billets dans le blog
    5
    Par défaut Redessiner une partie d'un GtkDrawingArea
    J'effectue quelques essais de code pour faire un jeu en 2d isométrique. Pour l'instant j'ai décidé d'utiliser un GtkDrawingArea comme support de dessin. Jusqu'ici rien d'original.
    J'ai implémenté quelques fonctions me permettant d'ajouter à la volée des sprites animés. C'est ici que je me pose des questions.
    Tout d'abord je suis parti sur l'idée d'appeler le CALLBACK attaché au signal "expose-event" 30 fois / s. Ca fonctionne. Mais je me dis aussi que redessiner tout le GtkDrawingArea n'est pas forcément l'idéal en terme de performance. Alors j'ai essayé de ne redessiner que les parties nécessaires en utilisant la fonction gdk_window_invalidate_rect();.Ca fonctionne aussi mais j'ai l'impression que ca revient au même. D'ailleurs la doc officielle me dit :
    Adds region to the update area for window. The update area is the region that needs to be redrawn, or "dirty region." The call gdk_window_process_updates() sends one or more expose events to the window, which together cover the entire update area.
    Ai-je bien tout compris ?

  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
    C'est à toi que revient la gestion de la zone à redessiner, l'argument de ton callback de type GdkEventExpose contient la zone qu'il faut redessiner (region)

  3. #3
    Expert confirmé
    Avatar de gerald3d
    Homme Profil pro
    Conducteur de train
    Inscrit en
    Février 2008
    Messages
    2 308
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Conducteur de train
    Secteur : Transports

    Informations forums :
    Inscription : Février 2008
    Messages : 2 308
    Billets dans le blog
    5
    Par défaut
    En effet gege2061. Je n'avais jamais travaillé le CALLBACK du signal "expose-event" de cette manière. Tout est dans le GdkEventExpose.

    Merci pour cette précision.

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

Discussions similaires

  1. Redessiner une partie de la zone non client
    Par Ceddddd dans le forum MFC
    Réponses: 2
    Dernier message: 14/10/2009, 18h07
  2. Redessiner une partie du document (voire tout)
    Par RaphAstronome dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 20/02/2008, 17h35
  3. comment remplacer une partie de texte dans un champs
    Par patlapi dans le forum Paradox
    Réponses: 4
    Dernier message: 20/11/2003, 14h38
  4. redessiner une Image1 avant de poursuivre
    Par jakouz dans le forum Composants VCL
    Réponses: 4
    Dernier message: 18/11/2003, 16h57
  5. selectionner une partie d'un TImage
    Par bidochon dans le forum Composants VCL
    Réponses: 2
    Dernier message: 20/02/2003, 19h08

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