Salut
Je voudrais savoir comment coller des images de telle façon qu'elles soient déposée en SPIRALE !!
merci
Version imprimable
Salut
Je voudrais savoir comment coller des images de telle façon qu'elles soient déposée en SPIRALE !!
merci
Je cherche, ...pas dit que je trouve ;)
Avec SDL ça serait plus facile.
Bon ça risque d'être long mais on peut peut être y arriver en utilisant une série de GtkBoxEvent auxquels on ajouterait une image de fond avec cette méthode :
Ensuite on pourrait jongler avec des tables, ou des GtkVbox et GtkHbox, des GtkAlignmentCode:
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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79 #include <gtk/gtk.h> void fond_ecran_set(GtkWidget *pWindow, gpointer user_data) { GdkPixmap *pixmap_fond=(GdkPixmap*) user_data; if (pixmap_fond) { gdk_window_set_back_pixmap (pWindow->window, pixmap_fond, FALSE); } } gboolean fond_ecran_expose(GtkWidget *pWindow, GdkEventExpose *event, gpointer user_data) { GdkPixmap *pixmap_fond=(GdkPixmap*) user_data; if (pixmap_fond) { gdk_window_set_back_pixmap (pWindow->window, pixmap_fond, FALSE); return TRUE; } return FALSE; } gint main(int argc, char **argv) { GtkWidget *pWindow; GdkPixbuf *pixbuf_fond=NULL; GdkPixmap *pixmap_fond=NULL; // Initialisation des librairies GTK+ gtk_init(&argc, &argv); // Création d'une fenêtre principale. pWindow = gtk_window_new(GTK_WINDOW_TOPLEVEL); gtk_window_set_title(GTK_WINDOW(pWindow), "Fenêtre principale"); gtk_window_set_default_size(GTK_WINDOW(pWindow), 800, 600); // Chargement de l'image dans un pixbuf à la taille de la fenêtre (pensez à changer le nom et le chemin) pixbuf_fond=gdk_pixbuf_new_from_file_at_size("./08_1280x1024.jpg", 800,600, NULL); /* Si le chargement a réussi on crée le pixmap qui sera utilisé pour le fond. Dans le cas contraire pixmap_fond=NULL. Cette valeur étant transmise aux fcts d'affichage, on peut a tout moment savoir si on peut afficher ou non.*/ if (pixbuf_fond) { // Création d'un GdkPixmap vierge pixmap_fond=gdk_pixmap_new(pWindow->window, gdk_pixbuf_get_width(pixbuf_fond), gdk_pixbuf_get_height(pixbuf_fond), gdk_visual_get_system()->depth); // insertion du GdkPixbuf (image chargée) dans le GdkPixmap. gdk_draw_pixbuf(pixmap_fond, pWindow->style-> fg_gc[GTK_WIDGET_STATE (pWindow)], pixbuf_fond,0,0,0,0, gdk_pixbuf_get_width(pixbuf_fond), gdk_pixbuf_get_height(pixbuf_fond), gdk_visual_get_system()->depth,0,0); // Supression du GdkPixbuf devenu inutile g_object_unref(pixbuf_fond); } /* Signaux associés pour l'affichage de l'image de fond. Vous pourrez y ajouter le signal "size-allocate" pour modifier la taille de l'image de fond en fonction de la taille de la fenêtre.*/ g_signal_connect(G_OBJECT(pWindow), "realize", G_CALLBACK(fond_ecran_set), pixmap_fond); g_signal_connect(G_OBJECT(pWindow), "expose-event", G_CALLBACK(fond_ecran_expose), pixmap_fond); // Signaux associés à la fenêtre principale pour quitter. g_signal_connect(G_OBJECT(pWindow), "destroy", G_CALLBACK(gtk_main_quit), NULL); g_signal_connect(G_OBJECT(pWindow), "delete_event", G_CALLBACK(gtk_main_quit), NULL); // Boucle principale GTK+ gtk_widget_show_all(pWindow); gtk_main(); return 0; }
Voilà ce ne sont que des pistes... je n'ai pas essayé.
Il y aura peut être une solution plus simple...
Je crois savoir qu'il existe une bibliothèque pour intégrer du code SDL avec GTK je n'ai pas réussi à la faire fonctionner.
On en parle ici mais il paraît que ce n'est pas très pratique.
Donc si tu veux faire un programme plutôt "graphique" n'utilise que SDL. C'est très simple (plus que GTK+).
tu peux commencer par :
http://loka.developpez.com/tutoriel/sdl/
Et le site officiel SDL:
- http://www.libsdl.org/
Voilà j'espère qu'avec ça tu pourras te débrouiller...