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 :

Mettre une image en fond d'écran ?


Sujet :

GTK+ avec C & C++

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    172
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 172
    Par défaut Mettre une image en fond d'écran ?
    Bonjour,

    Voilà, bizarrement mon Code::Blocks me sort cette erreur :
    undefined reference to 'gtk_set_sensitive'

    Pourtant j'utilise la dernière version stable de GTK...
    une idée ?

    Merci d'avance

  2. #2
    Membre éclairé
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2006
    Messages
    287
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2006
    Messages : 287
    Par défaut
    Pourquoi n'utilises tu pas gtk_widget_set_sensitive ?

    Est-ce que tu aurais un lien vers la documentation de la fonction gtk_set_sensitive ?

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    172
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 172
    Par défaut
    j'ai pas trouvé la doc...
    mais des résutats sur google... J'connaissais pas gtk_widget_set_sensitive, ou plutot j'l'avais oubliée ^^ C'est éxactement ce qu'il me fallait en tout cas merci ^^

    Sinon j'ai essayé cette astuce pour mettre une image en fond d'écran :
    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;
    }
    Mais il y a plein de fonction qui ne sont pas reconnues comme gdk_window_set_back_pixmap...

  4. #4
    Membre éclairé
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2006
    Messages
    287
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2006
    Messages : 287
    Par défaut
    Citation Envoyé par Kicker Voir le message
    j'ai pas trouvé la doc...
    mais des résutats sur google... J'connaissais pas gtk_widget_set_sensitive, ou plutot j'l'avais oubliée ^^ C'est éxactement ce qu'il me fallait en tout cas merci ^^

    Sinon j'ai essayé cette astuce pour mettre une image en fond d'écran :
    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;
    }
    Mais il y a plein de fonction qui ne sont pas reconnues comme gdk_window_set_back_pixmap...
    As tu inclus le fichier gdk/gdk.h ?

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    172
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 172
    Par défaut
    Ah non... C'est pas marqué qu'il faut l'inclure.
    Je l'ai inclus mais le résultat est le même...
    voici la liste de fonctions qui ne marchent pas :
    `gdk_pixbuf_new_from_file_at_size_utf8'
    `gdk_visual_get_system'
    `gdk_pixbuf_get_height'
    `gdk_pixbuf_get_width'
    `gdk_pixmap_new'
    `gdk_visual_get_system'
    `gdk_pixbuf_get_height'
    `gdk_pixbuf_get_width'
    `gdk_draw_pixbuf'
    `gdk_window_set_back_pixmap'

  6. #6
    Membre éclairé
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2006
    Messages
    287
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2006
    Messages : 287

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    172
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 172
    Par défaut
    Génial ! Ca marche
    Seul problème : ça écrase tout !
    Les labels et les bouttons ne saffichent plus :-/

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

Discussions similaires

  1. Mettre une image en fond d'écran ?
    Par Virginia95 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 3
    Dernier message: 03/01/2013, 14h24
  2. Réponses: 6
    Dernier message: 21/09/2006, 17h33
  3. Réponses: 4
    Dernier message: 03/05/2005, 09h03
  4. Comment mettre une image en fond de JFrame
    Par marc26 dans le forum Débuter
    Réponses: 3
    Dernier message: 19/01/2004, 17h57

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