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 :

Tracage de figures dans une gtk_drawing_area


Sujet :

GTK+ avec C & C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 40
    Par défaut Tracage de figures dans une gtk_drawing_area
    Bonjour.
    Je travaille actuellement avec la bibliothèque GTK+-1.2.

    J'ai sur mon application une gtk_drawing_area dans laquelle je souhaite dessiner une cercle et dans ce cercle des polygones, et de plusieurs boutons servants à dessiner ces deux dernieres figures. Jusque la, aucun problème.

    A partir de ce moment, j'ai déjà déclaré 4 évènements, un pour construire la drawing area lorsque je relance mon application et une pour reconstruire cette zone lorsqu'elle a été cachée par une autre fenetre ou a été sortie de l'écran, que je déclarent comme ca :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    gtk_signal_connect( GTK_OBJECT(aire), "configure_event", GTK_SIGNAL_FUNC (configure_event), NULL );
    gtk_signal_connect( GTK_OBJECT(aire), "expose_event", GTK_SIGNAL_FUNC (expose_event), NULL );
    Ensuite j'en déclare deux autres associées à mes boutons "Cercle" et "Polygone" :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    gtk_signal_connect (GTK_OBJECT (button), "clicked", GTK_SIGNAL_FUNC (creerCercle), NULL);
    gtk_signal_connect (GTK_OBJECT (button), "clicked", GTK_SIGNAL_FUNC (creerPoly), NULL);
    J'en arrive donc à mon problème, je dessine correctement ma figure mais elle ne s'affiche que lorsque je cache la drawing area pour lancer le rafraichissement...
    Voici le code de mes fonctions :

    Code : 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
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    static GdkPixmap *pixmap = NULL;
     
    gint creerCercle (GtkWidget *widget, gpointer *data)
    {
    	gdk_draw_rectangle (pixmap, aire->style->black_gc, TRUE, 50, 50, 150, 150);	
    	gdk_draw_pixmap(aire->window, aire->style->fg_gc[GTK_WIDGET_STATE (aire)], pixmap, 0, 0, 500, 500, -1, -1);
    	return TRUE;
    }
     
    static gint configure_event(GtkWidget *aire, GdkEventConfigure *event)
    {
    	/*if (pixmap) //Detruit le pixmap s'il existe déjà pour le remplacer
    	{
    		gdk_pixmap_destroy(pixmap);
    	}*/
     
    	pixmap = gdk_pixmap_new(aire->window, aire->allocation.width, aire->allocation.height, -1);
    	gdk_draw_rectangle (pixmap, aire->style->white_gc, TRUE, 0, 0, aire->allocation.width, aire->allocation.height);
     
    	return TRUE;
    }
     
    static gint expose_event(GtkWidget *widget, GdkEventExpose *event)
    {
    	gdk_draw_pixmap(widget->window, widget->style->fg_gc[GTK_WIDGET_STATE (widget)], pixmap, event->area.x, event->area.y, event->area.x, event->area.y, event->area.width, event->area.height);
     
    	return FALSE;
    }
    J'ai contience que c'est ma fonction gdk_draw_pixmap qui ne marche pas dans ma fonction creerCercle, mais je ne vois pas de solution...

    Merci d'avance pour votre aide !

  2. #2
    Membre expérimenté

    Inscrit en
    Mai 2005
    Messages
    132
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 132
    Par défaut
    Il faut appeler

    gtk_widget_draw ( ta_drawing_area, NULL );

    ?!

    Sans doute. Je ne sais pas. Fredy

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 40
    Par défaut
    En effet ca marche... j'ai un peu honte de pas avoir trouvé ca tout seul

    Merci beaucoup.

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

Discussions similaires

  1. Mettre des figures dans une seule page
    Par yassinmo dans le forum MATLAB
    Réponses: 4
    Dernier message: 22/05/2011, 13h17
  2. Réponses: 6
    Dernier message: 08/02/2011, 17h04
  3. [XL-2000] Ajout d'une plage de cellule verticalement selon nombre figurant dans une cellule
    Par brumarj dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 04/06/2010, 17h30
  4. [Débutant] plusieurs figures dans une seulle
    Par cocanouar dans le forum MATLAB
    Réponses: 2
    Dernier message: 20/04/2009, 10h48
  5. "Fusion" de figure dans une interface graphique
    Par pouette13 dans le forum Interfaces Graphiques
    Réponses: 16
    Dernier message: 11/07/2007, 16h12

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