Bonjour,
J'utilise un canevas pour dessiner un graphe de dépendance, et je souhaiterais exporter l'image final du canevas en format image.
Est-ce possible auriez vous des info sur la méthode à adopter ?
Merci.
Version imprimable
Bonjour,
J'utilise un canevas pour dessiner un graphe de dépendance, et je souhaiterais exporter l'image final du canevas en format image.
Est-ce possible auriez vous des info sur la méthode à adopter ?
Merci.
Bonjour,
Tu dois récupérer le GdkWindow correspondant à ton image, en extraire le GdkPixbuf correspondant et l'enregistrer avec Gdk.Pixbuf.save.
C'est la même technique que pour une capture d'écran. Voici un exemple de capture d'écran en GTK et python que tu pourras adapter.
Merci libreforce.
Comme ceci j'aurais bien toute l'image du canvas, même ce qui est hors écran ?
Tu veux dire, tout ton canevas même s'il la fenêtre est coupée par un bord de l'écran? J'aurais tendance à dire que oui, mais il faut réellement tester pour le savoir...
Bon, alors c'est que je en comprends pas ce que tu entends par canevas... Tu parles des décorations de fenêtre ?
C'est un dérivé de Gtk_Drawing_Area_Record.
Code:
1
2
3
4
5
6 package Gtkada.Canvas is type Interactive_Canvas_Record is new Gtk.Drawing_Area.Gtk_Drawing_Area_Record with private; ...
C'est une classe spécifique à GtkAda, elle n'existe pas dans les autres versions, donc je ne vais pas pouvoir t'aider sur ce point...
Merci liberforce
Je vais tester.
Bonjour
En complément de ce qui a déjà été écrit, il me semble que la bibliothèque Cairo permet d'exporter une image au format PNG :
Area : Gtk.Drawing_Area.Gtk_Drawing_Area;
Win : constant Gdk.Window.Gdk_Window := Get_Window (Area);
Dans le package Gdk.Cairo, il y a des primitives permettant de creer des objets Cairo à partir des pixmap/pixbuff.
procedure Set_Source_Pixmap
(Cr : Cairo_Context;
Pixmap : Gdk_Pixmap;
Pixmap_X : Gdouble;
Pixmap_Y : Gdouble);
-- Sets the given pixmap as the source pattern for the Cairo context.
Bonjour, merci poincare
Pour le moment j'exporte un jpeg avec Gdk.Pixbuf.save.
Je n'ai pas encore essayer d'enregistré au delà de la fenêtre, mais je testerais également cette solution.