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 :

[Cairo] Ecrire du texte


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 [Cairo] Ecrire du texte
    Salut.

    Je poursuis mon apprentissage de Cairo et cette fois-ci c'est l'écriture de texte qui me pose problème.
    J'essaye d'écrire deux lignes de texte, avec des couleurs différentes, à deux endroits différents sur un cairo_t* extrait d'un GtkDrawingArea*.

    J'arrive bien à afficher la première ligne mais pour la seconde je suis obligé de détruire le premier cairo_t* et en créer un autre pour afficher la seconde. Je ne comprends pas ce comportement. Peut être est-ce du aux changement de coordonnées des lignes.
    Voila le bout de code en question:
    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
    void affichage_dessin(GtkWidget *Zone_dessin, GdkEventExpose *event, gpointer user_data)
    {
      cairo_t *context = NULL;
      PangoLayout *layout = NULL;
     
      context = gdk_cairo_create (Zone_dessin->window);
     
      // 1ère ligne
      cairo_set_source_rgb (context, 0, 0.7, 0);
      layout = pango_layout_new (gtk_widget_get_pango_context (Zone_dessin));
      pango_layout_set_text (layout, "A vous de jouer...", 18);
      cairo_translate (context, 10, 20);
      pango_cairo_show_layout (context, layout);
      g_object_unref(layout);
      cairo_destroy(context);
     
      // 2ème ligne
      context = gdk_cairo_create (Zone_dessin->window);
      cairo_set_source_rgb (context, 0, 0, 1.0);
      layout = pango_layout_new (gtk_widget_get_pango_context (Zone_dessin));
      pango_layout_set_text (layout, "Motorisé par M3dlib", 20);
      cairo_translate (context, Zone_dessin->allocation.width-150, Zone_dessin->allocation.height-20);
      pango_cairo_show_layout (context, layout);
      g_object_unref(layout);
      cairo_destroy(context);
    }
    Si je ne détruis pas le premier context et que je l'utilise pour la deuxième ligne elle n'apparait pas!

  2. #2
    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
    Je pense que tu utilises mal cairo_translate. Regarde plutôt cairo_move_to. Avec tes valeurs en dur, tu dessines sans doute en dehors de la zone visible. Pour ce qui est spécifique pango, aucune idée, je ne l'ai jamais utilisé. Les seules infos que j'ai lues à ce sujet sont dans la FAQ cairo:
    http://cairographics.org/FAQ/#using_pango

  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, cairo_move_to(); est la solution au problème. Merci Liberforce.

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

Discussions similaires

  1. Ecrire du texte en couleurs dans un composant
    Par wutang dans le forum Composants
    Réponses: 11
    Dernier message: 12/07/2004, 10h55
  2. Ecrire du texte dans les fenetres filles (MDI)
    Par trilomdor dans le forum MFC
    Réponses: 9
    Dernier message: 23/06/2004, 17h00
  3. [VMR9][D3D9]ecrire un texte sur une surface
    Par drizztfr dans le forum DirectX
    Réponses: 2
    Dernier message: 13/11/2003, 15h06
  4. [MFC]Ecrire du texte dans un rectangle
    Par zaz16 dans le forum MFC
    Réponses: 8
    Dernier message: 29/07/2003, 10h31
  5. comment ecrire du texte dans une window application
    Par gaut dans le forum Autres éditeurs
    Réponses: 2
    Dernier message: 16/07/2003, 10h23

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