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 :

Images en spirale


Sujet :

GTK+ avec C & C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Inscrit en
    Avril 2008
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 3
    Par défaut Images en spirale
    Salut
    Je voudrais savoir comment coller des images de telle façon qu'elles soient déposée en SPIRALE !!
    merci

  2. #2
    Membre confirmé Avatar de acryline
    Profil pro
    Inscrit en
    Août 2006
    Messages
    200
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 200
    Par défaut
    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 :
    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
    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;
    }
    Ensuite on pourrait jongler avec des tables, ou des GtkVbox et GtkHbox, des GtkAlignment

    Voilà ce ne sont que des pistes... je n'ai pas essayé.

    Il y aura peut être une solution plus simple...

  3. #3
    Futur Membre du Club
    Inscrit en
    Avril 2008
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 3
    Par défaut
    Citation Envoyé par acryline Voir le message
    Je cherche, ...pas dit que je trouve
    Avec SDL ça serait plus facile.
    Merci pour ta réponse, mais peux-tu m'indiquer comment on fait sous SDL ?

    Cordialement

  4. #4
    Membre confirmé Avatar de acryline
    Profil pro
    Inscrit en
    Août 2006
    Messages
    200
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 200
    Par défaut
    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...

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

Discussions similaires

  1. Resize d'une image
    Par Anonymous dans le forum C
    Réponses: 6
    Dernier message: 13/07/2008, 22h23
  2. recherche des algorythmes pour images 2d
    Par exxos dans le forum Algorithmes et structures de données
    Réponses: 3
    Dernier message: 24/05/2002, 13h46
  3. lire une image au format RAW
    Par Anonymous dans le forum OpenGL
    Réponses: 5
    Dernier message: 20/05/2002, 00h11
  4. faire un selection dans une image aves les APIs
    Par merahyazid dans le forum C++Builder
    Réponses: 3
    Dernier message: 30/04/2002, 10h44
  5. Création image BMP
    Par Anonymous dans le forum C
    Réponses: 2
    Dernier message: 25/04/2002, 16h04

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