Bonjour,
quelqu'un sait il comment metre une image de fond dans une wxframe??
merci d'avance
jerem
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
------- -------
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);
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/
ok sa roule j avais juste mis
au lieu de le mettre sur mon panel
Code : Sélectionner tout - Visualiser dans une fenêtre à part wxClientDC dc(this);
par contre mes labels ne s'affiche pas alors que mes wxTextCtrl ne pose pas de probleme
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
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.
ben le probleme c'est que je doit mal les utilisé etant donné que mes label n'apparaisse pas
Dans quoi sont-ils inclus ? (quel est le conteneur qui les contient?)
je dirai le panel c'est bien le premier parametre!,Envoyé par PRomu@ld
Pourrais-tu nous montrer le constructeur de ta frame ?
Envoyé par PRomu@ldle probleme survien uniquement quand j'applique une image en fond sur le pannel et touche egalement les boutons
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"); }
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.
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
En fait, non, tu n'est obligé en rien, mais c'est plus souple.Les sizer sont obligatoire??
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.
y a une methode Refresh()Envoyé par PRomu@ld
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()
C'est normal, tu es rentré dans une boucle infinie !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
Ce n'est pas sur this qu'il faut appliquer le refresh mais sur les contrôles que tu ne vois plus.
c'est se que j'ai remarqué apres coupEnvoyé par PRomu@ld
oui mais la fonction refresh() me genere une erreur a la compilation (non definie pour la classe wxStaticText) pourtant wxstatictext e est derivé de wxwindowsEnvoyé par PRomu@ld
Montre nous :
-> l'erreur de compilation
-> le code incriminé
/home/florent/monapp/src/monapp.cpp: In constructor 'MonappFrame::MonappFrame(const wxString&, const wxPoint&, const wxSize&, long int)':Envoyé par PRomu@ld
/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 ***
lbl1.Refesh();Envoyé par PRomu@ld
dans le constructueur juste apres la creation de mes labels
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.
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager