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 comme arrière-plan dans une fenetre? [FAQ]


Sujet :

GTK+ avec C & C++

  1. #1
    Membre chevronné
    Avatar de afrikha
    Profil pro
    Étudiant
    Inscrit en
    Août 2005
    Messages
    1 600
    Détails du profil
    Informations personnelles :
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2005
    Messages : 1 600
    Points : 2 208
    Points
    2 208
    Par défaut image comme arrière-plan dans une fenetre?
    voilà,j'ai crée une fenètre avec GTK+ dans laquelle j'ai mis des boutons et des "frames" en utilisant une table.lorsque j'essaye de mettre une image comme arrière-plan dans ma fenetre,cell-ci cache tout le reste(boutons,etc...).
    j'espère que c'est pas trop mal expliqué.
    y'a-t-il un moyen pour eviter cela?

    merci d'avance pour votre aide

  2. #2
    Rédacteur

    Avatar de gege2061
    Femme Profil pro
    Administrateur de base de données
    Inscrit en
    Juin 2004
    Messages
    5 840
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Juin 2004
    Messages : 5 840
    Points : 11 625
    Points
    11 625
    Par défaut Re: [GTK+]image comme arrière-plan dans une fenetre?
    Bonjour,
    Citation Envoyé par afrikha
    voilà,j'ai crée une fenètre avec GTK+ dans laquelle j'ai mis des boutons et des "frames" en utilisant une table.lorsque j'essaye de mettre une image comme arrière-plan dans ma fenetre,cell-ci cache tout le reste(boutons,etc...).
    ça me parrai plutot normal qu'une image d'arrière plan soit cachée par les Widgets
    Peu être qu'une copie d'écran permettrai de mieu comprendre ton problème

  3. #3
    Membre chevronné
    Avatar de afrikha
    Profil pro
    Étudiant
    Inscrit en
    Août 2005
    Messages
    1 600
    Détails du profil
    Informations personnelles :
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2005
    Messages : 1 600
    Points : 2 208
    Points
    2 208
    Par défaut
    enfin une reponse,ça fait plaisir car ça fait un moment que je galère là
    ça me parrai plutot normal qu'une image d'arrière plan soit cachée par les Widgets
    non,c'est l'inverse,c'est l'arrière plan qui cache les Widgets!!
    pourtant je mets bien d'abord l'image dans la table ensuite je mets les boutons ,frames,etc...
    je suis perdu là,en plus je ne trouve rien sur le web

  4. #4
    Rédacteur

    Avatar de gege2061
    Femme Profil pro
    Administrateur de base de données
    Inscrit en
    Juin 2004
    Messages
    5 840
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Juin 2004
    Messages : 5 840
    Points : 11 625
    Points
    11 625
    Par défaut
    Citation Envoyé par afrikha
    non,c'est l'inverse,c'est l'arrière plan qui cache les Widgets!!
    pourtant je mets bien d'abord l'image dans la table ensuite je mets les boutons ,frames,etc...
    Ah ok, j'ai lu trop vite
    Tu pourrais poster le code réduit au minimum compilable (création de l'image et d'un widget, ça suffit) ça sera plus pratique pour essayé de faire quelque chose

  5. #5
    Membre chevronné
    Avatar de afrikha
    Profil pro
    Étudiant
    Inscrit en
    Août 2005
    Messages
    1 600
    Détails du profil
    Informations personnelles :
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2005
    Messages : 1 600
    Points : 2 208
    Points
    2 208
    Par défaut
    voilà
    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
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    #include <stdlib.h>
    #include <gtk/gtk.h>
     
     
    int main(int argc, char **argv)
    {
        /*creation du widget (ici c'est une fenetre)*/
        GtkWidget *pfenetre;
        GtkWidget *pbarmenu;
        GtkWidget *ptable;
        GtkWidget *pmenuitem;
        GtkWidget *pmenu;
        GtkWidget *ptexte;
        GtkWidget *pbouton;
        GtkWidget *pimage;
        GtkWidget *pcadre;
        gchar *texte;
        /* Initialisation de GTK+ */
        gtk_init(&argc, &argv);
        /*creation de la fenetre*/
        pfenetre = gtk_window_new(GTK_WINDOW_TOPLEVEL);
        pbarmenu=gtk_menu_bar_new();
        ptable=gtk_table_new(19,10,TRUE);
        gtk_container_add(GTK_CONTAINER(pfenetre),GTK_WIDGET(ptable));
     
        /*titre de la fenetre*/
        gtk_window_set_title(GTK_WINDOW(pfenetre),"premiere fenetre");
        /*taille par default de la fenetre*/
        gtk_window_set_default_size(GTK_WINDOW(pfenetre),1280,737);
        /*position par default de la fenetre*/
        gtk_window_set_position(GTK_WINDOW(pfenetre),GTK_WIN_POS_CENTER);
        /*deplacer la fenetre*/
        gtk_window_move(GTK_WINDOW(pfenetre),-4,-4);
        /*creation du menu fichier*/
     
        /*creation de l'arriere plan*/
        pimage=gtk_image_new_from_file(".\image.png");
        gtk_table_attach_defaults(GTK_TABLE(ptable),pimage,0,10,1,19);
     
        /*creation des boutons*/
        pbouton=gtk_button_new();
        pimage=gtk_image_new_from_file("C:\\Documents and Settings\\anis frikha\\Bureau\\session.png");
        gtk_container_add(GTK_CONTAINER(pbouton),pimage);
        gtk_table_attach_defaults(GTK_TABLE(ptable),pbouton,1,2,3,5);
        pbouton=gtk_button_new();
        pimage=gtk_image_new_from_file("C:\\Documents and Settings\\aBureau\\lunette.jpeg");
        gtk_container_add(GTK_CONTAINER(pbouton),pimage);
        gtk_table_attach_defaults(GTK_TABLE(ptable),pbouton,1,2,7,9);
        pbouton=gtk_button_new();
        pimage=gtk_image_new_from_file("C:\\Documents and Settings\\afrikha\\Bureau\\lunette.jpeg");
        gtk_container_add(GTK_CONTAINER(pbouton),pimage);
        gtk_table_attach_defaults(GTK_TABLE(ptable),pbouton,1,2,11,13);
     
     
     
        /*creation des cadres*/
     
        pcadre=gtk_frame_new("Session Confidentielle");
        ptexte=gtk_label_new(NULL);
        gtk_label_set_markup(GTK_LABEL(ptexte),"<big>Ouvrir une session confidentielle donnant acces aux \ndonnees comptables du stock.</big>");
        gtk_container_add(GTK_CONTAINER(pcadre),ptexte);
        gtk_frame_set_shadow_type(GTK_FRAME(pcadre), GTK_SHADOW_ETCHED_IN);
        gtk_table_attach_defaults(GTK_TABLE(ptable),pcadre,2,4,3,5);
        pcadre=gtk_frame_new("Gestion des Clients");
        ptexte=gtk_label_new(NULL);
        gtk_label_set_markup(GTK_LABEL(ptexte),"<big>Gerer les ventes ainsi que toutes les informations\nrelatives aux clients.</big>");
        gtk_container_add(GTK_CONTAINER(pcadre),ptexte);
        gtk_frame_set_shadow_type(GTK_FRAME(pcadre), GTK_SHADOW_ETCHED_IN);
        gtk_table_attach_defaults(GTK_TABLE(ptable),pcadre,2,4,7,9);
        pcadre=gtk_frame_new("Gestion des Fournisseurs");
        ptexte=gtk_label_new(NULL);
        gtk_label_set_markup(GTK_LABEL(ptexte),"<big>Gerer les approvisionnements ainsi que toutes les informations\nrelatives aux fournisseurs.</big>");
        gtk_container_add(GTK_CONTAINER(pcadre),ptexte);
        gtk_frame_set_shadow_type(GTK_FRAME(pcadre), GTK_SHADOW_ETCHED_IN);
        gtk_table_attach_defaults(GTK_TABLE(ptable),pcadre,2,4,11,13);
     
     
     
     
     
     
     
     
        /*affichage de la fenetre*/
        gtk_widget_show_all(pfenetre);
        /*connection du signal de la fenetre*/
        g_signal_connect(G_OBJECT(pfenetre),"destroy",G_CALLBACK(gtk_main_quit),NULL);
            /*lancement de la boucle evenementielle*/
        gtk_main();
        return EXIT_SUCCESS;
    }
    essaye de mettre une image grande comme arriere plan!tu verra de quoi je parle.
    merci pour ton aide

  6. #6
    Rédacteur

    Avatar de gege2061
    Femme Profil pro
    Administrateur de base de données
    Inscrit en
    Juin 2004
    Messages
    5 840
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Juin 2004
    Messages : 5 840
    Points : 11 625
    Points
    11 625
    Par défaut
    Ton code n'est pas tout à fait réduit au minimum
    Par contre, il y a une erreur dans le chemin de l'image, ce n'est pas ".\image.png" mais "./image.png" qu'il faut utiliser (portable), de plus gcc m'a gentillement dit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    unknown escape sequence '\i'
    Puisque '\' est un caractère spécial, il faut l'echaper (comme tu as fais pour les autres images).

    Pour en revenir a ton problème, si tu fais 1) puis 2) et que 1) cache 2), il suffit de faire 2) puis 1) :
    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
    #include <stdlib.h>
    #include <gtk/gtk.h>
     
    int main(int argc, char **argv)
    {
        GtkWidget *p_window;
        GtkWidget *p_table;
        GtkWidget *p_button;
        GtkWidget *p_image;
     
        /* Initialisation de GTK+ */
        gtk_init (&argc, &argv);
     
        /* Creation de la fenetre */
        p_window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
        g_signal_connect (G_OBJECT (p_window), "destroy", G_CALLBACK(gtk_main_quit), NULL);
     
        /* Creation de la table */
        p_table = gtk_table_new (10, 10, TRUE);
        gtk_container_add (GTK_CONTAINER (p_window), p_table);
     
        /* Creation d'un bouton */
        p_button = gtk_button_new_with_label ("Quit");
        gtk_table_attach_defaults (GTK_TABLE (p_table), p_button, 1, 10, 3, 10);
        g_signal_connect (G_OBJECT (p_button), "clicked", G_CALLBACK(gtk_main_quit), NULL);
     
        /* Creation de l'arriere plan */
        p_image = gtk_image_new_from_file ("./img.jpeg");
        gtk_table_attach_defaults (GTK_TABLE (p_table), p_image, 0, 10, 0, 10);
     
        /* Affichage de la fenetre */
        gtk_widget_show_all (p_window);
     
        /* Lancement de la boucle evenementielle */
        gtk_main();
        return EXIT_SUCCESS;
    }
    Par contre je n'ai pas d'explication à te fournir sur le pourquoi ça marche comme ça et pas l'inverse (surement dû à la gestion de l'affichage par GTK+ )

  7. #7
    Membre chevronné
    Avatar de afrikha
    Profil pro
    Étudiant
    Inscrit en
    Août 2005
    Messages
    1 600
    Détails du profil
    Informations personnelles :
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2005
    Messages : 1 600
    Points : 2 208
    Points
    2 208
    Par défaut
    ça marche
    merci infiniment gege2061;tu as mis fin à des heures de souffrance.
    encore une fois merci

    P.S:je vais pouvoir passer au problème suivant (cf sujet)

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

Discussions similaires

  1. détection de plan dans une image
    Par mar1985 dans le forum Traitement d'images
    Réponses: 0
    Dernier message: 10/06/2013, 18h40
  2. Réponses: 1
    Dernier message: 06/02/2013, 15h59
  3. Réponses: 2
    Dernier message: 02/01/2009, 10h38
  4. Détection des plans dans une image 3D
    Par paradize3 dans le forum Traitement d'images
    Réponses: 13
    Dernier message: 02/10/2007, 09h43
  5. Réponses: 4
    Dernier message: 03/05/2005, 09h03

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