Bonsoir,
Comment positionner une image à une position précise dans la fenêtre, et ne pas laisser gtk la positionner pour nous?
Ou bien encore comment peut-on récupérer la position x,y d'une image(coin supérieur gauche) dans la fenêtre?
Bonsoir,
Comment positionner une image à une position précise dans la fenêtre, et ne pas laisser gtk la positionner pour nous?
Ou bien encore comment peut-on récupérer la position x,y d'une image(coin supérieur gauche) dans la fenêtre?
Positionner une image ou connaître sa position sous-entend que l'image est un objet manipulable par Gtk. Donc que c'est un GtkWidget.
Une autre façon de voir les choses serait de disposer d'un GtkDrawingArea dans lequel tu places/détermines la position d'une image. Ici il te faut conserver, par tes propres moyens, ses coordonnées.
Utilisation de Glade avec Gtk+
Code::Blocks et Gtk+ sous Windows
Programmation orientée objet avec Gtk+ v3
- N'oubliez pas de consulter les FAQ Gtk et les cours et tutoriels Gtk
J'utilise un GtkImage avec image=gtk_image_new_from_file("fichier.jpg");
Comment connaitre la position(x,y) du point supérieur gauche de l'image dans la fenêtre?
La fonction gtk_widget_get_margin_left (image); me renvoie 0.
Tu peux utiliser la fonction gtk_widget_get_allocation();. La variable GtkAllocation (qui est en fait un GdkRectangle) te permettra de retrouver la position de ton image dans le widget parent.
Utilisation de Glade avec Gtk+
Code::Blocks et Gtk+ sous Windows
Programmation orientée objet avec Gtk+ v3
- N'oubliez pas de consulter les FAQ Gtk et les cours et tutoriels Gtk
Mouais...En fait cette fonction retourne 0 pour x et y pour la position y.
Mon image est placée au centre(horizontalement parlant) dans une box verticale, l'allocation utilisée remplit tout l'espace horizontal, même si mon image ne remplit pas tout.
Il y a donc un décalage entre la position x réelle de l'image et le x(ici 0) de la position retournée par gtk_widget_get_allocation()...
Tu es à la limite de l'exercice. Finalement le GtkAllocation est correcte au vu de ton GtkWidget. Tu peux soit recalculer le x si tu connais la largeur de ton image par rapport à la largeur du widget parent, soit utiliser un GtkDrawingArea dans lequel tu places ton image comme bon te semble. Cette deuxième solution implique une sauvegarde de la position de l'image dans le GtkDrawingArea.
Utilisation de Glade avec Gtk+
Code::Blocks et Gtk+ sous Windows
Programmation orientée objet avec Gtk+ v3
- N'oubliez pas de consulter les FAQ Gtk et les cours et tutoriels Gtk
Pour conclure :
Avec gtk_widget_get_preferred_size je récupère la taille de l'image, je retranche la largeur de la largeur allouée et je divise par 2 pour obtenir la position x...
C'est quand même pas simple: j'aurais cru que la position(x,y) de chaque widget était stockée quelquepart.
Sinon, on peut positionner un widget précisèment dans un GtkLayout avec void gtk_layout_put (GtkLayout *layout, GtkWidget *child_widget, gint x, gint y);
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager