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

wxWidgets Discussion :

image de fond dans un wxframe


Sujet :

wxWidgets

  1. #1
    Membre éprouvé Avatar de Jérémy Lefevre
    Homme Profil pro
    Développeur Java
    Inscrit en
    Juin 2004
    Messages
    898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Luxembourg

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2004
    Messages : 898
    Points : 969
    Points
    969
    Par défaut image de fond dans un wxframe
    Bonjour,
    quelqu'un sait il comment metre une image de fond dans une wxframe??
    merci d'avance
    jerem
    Rien ne se perd, rien ne se crée, tout se transforme

    ------- -------

  2. #2
    Membre à l'essai
    Inscrit en
    Avril 2005
    Messages
    30
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 30
    Points : 17
    Points
    17
    Par défaut
    je suis sur le meme probleme j'ai trouvé un bout de code mais non fonctionel (il se passe rien du tout)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    	wxImage* fond = new wxImage ();
    	fond->AddHandler(new wxJPEGHandler);
    	fond->LoadFile("camo.jpg", wxBITMAP_TYPE_JPEG);
    	wxBitmap* bitmap = new wxBitmap (*fond);
     
    	wxClientDC dc(this);
    	dc.DrawBitmap(*bitmap, 0, 0);

  3. #3
    Expert éminent
    Avatar de PRomu@ld
    Homme Profil pro
    Ingénieur de Recherche
    Inscrit en
    Avril 2005
    Messages
    4 155
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Ingénieur de Recherche
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2005
    Messages : 4 155
    Points : 6 486
    Points
    6 486
    Par défaut
    Cette méthode soit être située dans une méthode OnPaint qui est appelée dans un EVT_PAINT.

    Il faut donc suivre ce qui est fait sur cet article :

    http://chgi.developpez.com/wxwidgets/chap3/

  4. #4
    Membre à l'essai
    Inscrit en
    Avril 2005
    Messages
    30
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 30
    Points : 17
    Points
    17
    Par défaut
    ok sa roule j avais juste mis
    au lieu de le mettre sur mon panel


    par contre mes labels ne s'affiche pas alors que mes wxTextCtrl ne pose pas de probleme

  5. #5
    Membre à l'essai
    Inscrit en
    Avril 2005
    Messages
    30
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 30
    Points : 17
    Points
    17
    Par défaut
    bon c'est mon panel qui fout la merde sans sa marche
    Donc si quelqu un a un tuto sur l'utilisation des panel je suis preneur

  6. #6
    Expert éminent
    Avatar de PRomu@ld
    Homme Profil pro
    Ingénieur de Recherche
    Inscrit en
    Avril 2005
    Messages
    4 155
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Ingénieur de Recherche
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2005
    Messages : 4 155
    Points : 6 486
    Points
    6 486
    Par défaut
    Comment à tu organisé la fenetre ?

    En général, je groupe sur un panet un ensemble de contrôle, eux même alignés via des Sizer. Ensuite, ma frame principale est un ensemble de panel et/ou de contrôles qui sous placés via des Sizers.

  7. #7
    Membre à l'essai
    Inscrit en
    Avril 2005
    Messages
    30
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 30
    Points : 17
    Points
    17
    Par défaut
    ben le probleme c'est que je doit mal les utilisé etant donné que mes label n'apparaisse pas

  8. #8
    Expert éminent
    Avatar de PRomu@ld
    Homme Profil pro
    Ingénieur de Recherche
    Inscrit en
    Avril 2005
    Messages
    4 155
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Ingénieur de Recherche
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2005
    Messages : 4 155
    Points : 6 486
    Points
    6 486
    Par défaut
    Dans quoi sont-ils inclus ? (quel est le conteneur qui les contient?)

  9. #9
    Membre à l'essai
    Inscrit en
    Avril 2005
    Messages
    30
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 30
    Points : 17
    Points
    17
    Par défaut
    Citation Envoyé par PRomu@ld
    Dans quoi sont-ils inclus ? (quel est le conteneur qui les contient?)
    je dirai le panel c'est bien le premier parametre!,

  10. #10
    Expert éminent
    Avatar de PRomu@ld
    Homme Profil pro
    Ingénieur de Recherche
    Inscrit en
    Avril 2005
    Messages
    4 155
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Ingénieur de Recherche
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2005
    Messages : 4 155
    Points : 6 486
    Points
    6 486
    Par défaut
    Pourrais-tu nous montrer le constructeur de ta frame ?

  11. #11
    Membre à l'essai
    Inscrit en
    Avril 2005
    Messages
    30
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 30
    Points : 17
    Points
    17
    Par défaut
    Citation Envoyé par PRomu@ld
    Pourrais-tu nous montrer le constructeur de ta frame ?
    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
     
    MonappFrame::MonappFramee( const wxString& title, const wxPoint& pos, const wxSize& size, long style)
    	: wxFrame((wxFrame *)NULL, -1, title, pos, size, style)
    {
     
     
     
    	wxMenu *menuFile = new wxMenu;
     
    	menuFile->Append( Menu_File_About, wxT( "&A propos..." ) );
    	menuFile->AppendSeparator();
    	menuFile->Append( Menu_File_Titre, wxT( "Change titre" ) );
    	menuFile->AppendSeparator();
    	menuFile->Append( Menu_File_Quit, wxT( "E&xit" ) );
    	wxMenuBar *menuBar = new wxMenuBar;
    	menuBar->Append( menuFile, wxT( "&Fichier" ) );
     
    	SetMenuBar( menuBar );
     
    	panel= new wxPanel(this);
    	lbl1 = new wxStaticText(panel,-1,"Nombre 1:",wxPoint(130,30));
    	txtbox_1 = new wxTextCtrl(panel,-1,"",wxPoint(330,30),wxSize(30,20));
    	lbl1->SetFont(wxFont(12, wxSWISS , wxNORMAL, wxBOLD, false, "Arial"));	
    	lbl1->SetForegroundColour(wxColour(102,255,51));
     
    	lbl2= new wxStaticText(panel,-1,"Nombre de teams :",wxPoint(130,80));
    	txtbox_2 = new wxTextCtrl(panel,-1,"",wxPoint(330,80),wxSize(30,20));
    	lbl2->SetFont(wxFont(12, wxSWISS , wxNORMAL, wxBOLD, false, "Arial"));
    	lbl2->SetForegroundColour(wxColour(102,255,51));
     
    	but_Go = new wxButton(panel,ID_GO,"Go Go Go!!!",wxPoint(220,110),wxDefaultSize);
    	CreateStatusBar();
    	SetStatusText( wxT( "Bienvenue");
    }
    le probleme survien uniquement quand j'applique une image en fond sur le pannel et touche egalement les boutons

  12. #12
    Expert éminent
    Avatar de PRomu@ld
    Homme Profil pro
    Ingénieur de Recherche
    Inscrit en
    Avril 2005
    Messages
    4 155
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Ingénieur de Recherche
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2005
    Messages : 4 155
    Points : 6 486
    Points
    6 486
    Par défaut
    En fait ton problème vient du fait que tu n'attache pas tes contrôles à ton panel de même que ton panel n'est pas attaché à ta frame.

    Utilise des sizers pour ceci.

    Tu crée tes sizers, tu utilises les méthodes Add pour y ajouter tes controles, puis tu place tes sizers dans ta frame ou ton panel avec la méthode SetSizer.

  13. #13
    Membre à l'essai
    Inscrit en
    Avril 2005
    Messages
    30
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 30
    Points : 17
    Points
    17
    Par défaut
    Les sizer sont obligatoire??

    Parceque avant de decider de coder en dur mon interface je suis passé par des générateurs et j'arrivé pas a positionné ou je voulais mes controles

    Sa me divisé mon panel en cadre


    dur dur 2 ans d'arret et apres se replonger dans une bibliothéque que l'on ne connait pas

  14. #14
    Expert éminent
    Avatar de PRomu@ld
    Homme Profil pro
    Ingénieur de Recherche
    Inscrit en
    Avril 2005
    Messages
    4 155
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Ingénieur de Recherche
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2005
    Messages : 4 155
    Points : 6 486
    Points
    6 486
    Par défaut
    Les sizer sont obligatoire??
    En fait, non, tu n'est obligé en rien, mais c'est plus souple.

    Pour ton problème, j'ai lu un poil trop vite et j'ai vu que ton problème apparaissait seulement lors de l'affichage d'une image de fond.

    En fait ce qui se passe, c'est que ton image est affiché au dessus de tes contrôles. Ce qu'il faut, c'est modifier ton OnPaint de façon à ce qu'il affiche ton image puis affiche dessus tes contrôles (en fait en reforcer le réaffichage).

    Je n'ai malheureusement pas le temps de chercher dans la doc, mais il doit y avoir une méthode redraw ou repaint, ou quelque chose dans le genre pour réafficher un controle (ça devrait être une méthode de wxwindow). Mais je pense que tu pourras la trouver.

  15. #15
    Membre à l'essai
    Inscrit en
    Avril 2005
    Messages
    30
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 30
    Points : 17
    Points
    17
    Par défaut
    Citation Envoyé par PRomu@ld
    Je n'ai malheureusement pas le temps de chercher dans la doc, mais il doit y avoir une méthode redraw ou repaint, ou quelque chose dans le genre pour réafficher un controle (ça devrait être une méthode de wxwindow). Mais je pense que tu pourras la trouver.
    y a une methode Refresh()
    mais le this->Refresh() dans le onpaint sa a pas ete une bonne idee sa a rafraichit en bouche jusqu'a plante le pc

    maintenant il veux meme plus compiler avec le this->Refresh()

  16. #16
    Expert éminent
    Avatar de PRomu@ld
    Homme Profil pro
    Ingénieur de Recherche
    Inscrit en
    Avril 2005
    Messages
    4 155
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Ingénieur de Recherche
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2005
    Messages : 4 155
    Points : 6 486
    Points
    6 486
    Par défaut
    y a une methode Refresh()
    mais le this->Refresh() dans le onpaint sa a pas ete une bonne idee sa a rafraichit en bouche jusqu'a plante le pc
    C'est normal, tu es rentré dans une boucle infinie !

    Ce n'est pas sur this qu'il faut appliquer le refresh mais sur les contrôles que tu ne vois plus.

  17. #17
    Membre à l'essai
    Inscrit en
    Avril 2005
    Messages
    30
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 30
    Points : 17
    Points
    17
    Par défaut
    Citation Envoyé par PRomu@ld
    C'est normal, tu es rentré dans une boucle infinie !
    c'est se que j'ai remarqué apres coup

    Citation Envoyé par PRomu@ld
    Ce n'est pas sur this qu'il faut appliquer le refresh mais sur les contrôles que tu ne vois plus.
    oui mais la fonction refresh() me genere une erreur a la compilation (non definie pour la classe wxStaticText) pourtant wxstatictext e est derivé de wxwindows

  18. #18
    Expert éminent
    Avatar de PRomu@ld
    Homme Profil pro
    Ingénieur de Recherche
    Inscrit en
    Avril 2005
    Messages
    4 155
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Ingénieur de Recherche
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2005
    Messages : 4 155
    Points : 6 486
    Points
    6 486
    Par défaut
    Montre nous :

    -> l'erreur de compilation
    -> le code incriminé

  19. #19
    Membre à l'essai
    Inscrit en
    Avril 2005
    Messages
    30
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 30
    Points : 17
    Points
    17
    Par défaut
    Citation Envoyé par PRomu@ld
    Montre nous :
    -> l'erreur de compilation
    /home/florent/monapp/src/monapp.cpp: In constructor 'MonappFrame::MonappFrame(const wxString&, const wxPoint&, const wxSize&, long int)':
    /home/florent/monapp/src/monapp.cpp:62: error: request for member 'Refesh' in '((MonappFrame*)this)->MonappFrame::lbl1', which is of non-class type 'wxStaticText*'
    make[1]: *** [monapp.o] Erreur 1
    make[1]: quittant le répertoire « /home/florent/monapp/debug/src »
    make[1]: La cible « all » n'a pas pu être refabriquée à cause d'erreurs.
    make[1]: entrant dans le répertoire « /home/florent/monapp/debug »
    make[1]: Rien à faire pour « all-am ».
    make[1]: quittant le répertoire « /home/florent/monapp/debug »
    make: *** [all-recursive] Erreur 1
    make: La cible « all » n'a pas pu être refabriquée à cause d'erreurs.
    *** Sortie avec l'état : 2 ***

    Citation Envoyé par PRomu@ld
    -> le code incriminé
    lbl1.Refesh();
    dans le constructueur juste apres la creation de mes labels

  20. #20
    Expert éminent
    Avatar de PRomu@ld
    Homme Profil pro
    Ingénieur de Recherche
    Inscrit en
    Avril 2005
    Messages
    4 155
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Ingénieur de Recherche
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2005
    Messages : 4 155
    Points : 6 486
    Points
    6 486
    Par défaut
    Tu n'aurais pas un soucis de pointeur ? (-> c'est pour un pointeur . pas )

    Je ne vois que ça pour l'instant et avec le code que tu peux nous donner.

Discussions similaires

  1. Réponses: 6
    Dernier message: 21/09/2006, 17h33
  2. Réponses: 5
    Dernier message: 27/09/2005, 09h18
  3. image de fond dans treeview
    Par chancourt dans le forum Composants VCL
    Réponses: 4
    Dernier message: 17/08/2005, 16h11
  4. Etirer une image de fond dans une cellule
    Par dreamanoir dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 13/07/2005, 14h39
  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