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 :

Image en fond d'écran


Sujet :

GTK+ avec C & C++

  1. #1
    Membre habitué
    Inscrit en
    Janvier 2007
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 10
    Par défaut Image en fond d'écran
    Bonjour à tous,

    Je souhaiterai tout simplement changer l'arriére plan de mon programme.
    En effet, je trouve fort laid le fond gris par defaut.

    Dans un premier temps, à l'aide de tutorial j'y suis parvenu (uniquement un résultat en mosaïque) mais cependant un probleme se posé : mes labels disparaisait dans l'image, mais les gtk_entry_new restait visible.

    Resultat avant :
    Pièce jointe 10751

    Resultat apres :
    Pièce jointe 10752


    Donc si vous pouvez maidez pour pouvoir y mettre une image en FOND qui se réagrandit en fonction de la taille de la fenêtre (pas de mosaique ), je vous serez fort reconnaissant .
    Deplus si il es possible de changer la couleur de fond, vous pouvez aussi m'indiquez la marche à suivre.

    Merci beaucoup.

  2. #2
    Membre chevronné Avatar de Lunixinclar
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juillet 2006
    Messages
    416
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 416
    Par défaut
    Salut,
    Je crois qu'il faut redimensionner l' image sur évènement expose de la fenêtre ou de l' image.

    Pour changer la couleur de fond d'un widget:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     GdkColor color;
      gdk_color_parse ("#C99FEB", &color);
      // ou gdk_color_parse ("lightmagenta", &color);
      gtk_widget_modify_base (monwidget, GTK_STATE_NORMAL, &color);
    Il ressemble à quoi le code pour l'image de fond?

  3. #3
    Membre habitué
    Inscrit en
    Janvier 2007
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 10
    Par défaut
    Voici le code :
    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
    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;
    }

Discussions similaires

  1. image en fond d'écran
    Par usf70 dans le forum wxPython
    Réponses: 9
    Dernier message: 23/01/2009, 13h27
  2. [VB6] image en fond d'écran d'application
    Par benoitl dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 11/05/2006, 18h11
  3. image en fond d'écran
    Par somatino dans le forum Balisage (X)HTML et validation W3C
    Réponses: 5
    Dernier message: 13/03/2006, 00h53
  4. emplacement de l'image de fond d'écran win xp
    Par t26 dans le forum Windows XP
    Réponses: 3
    Dernier message: 02/09/2005, 10h22
  5. image de fond d'écran
    Par badr dans le forum Balisage (X)HTML et validation W3C
    Réponses: 4
    Dernier message: 28/04/2005, 16h50

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