Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2408 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  [wxWidget] Flickering pendant wxPaintDC

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[wxWidget] Flickering pendant wxPaintDC

n°1822587
azubal
Posté le 05-12-2008 à 17:10:34  profilanswer
 

Bonjour tout le monde.
Je bricole une petit appli devant afficher des animations à l'écran.
Pour cela je me sers de wxwidget...
 
J'ai donc mon petit wxbitmap tout chaud tout neuf que je souhaite afficher dans ma fenêtre. Voici comment je fesse avec la methode OnPaint :  

Code :
  1. void CameraFrame::OnPaint( wxPaintEvent& evt )
  2. {
  3. wxPaintDC dc(this);
  4. if (m_bitmap.Ok())
  5.  dc.DrawBitmap(m_bitmap, 0, 0);
  6. }


 
Difficile de faire plus simple :D
Bref ca marche... Mais (car il y toujours un "mais" ).. Ca clignote sévère....
J'ai cherché un moyen de lui dire de ne paaaaaasss effacer l'écran à chaque "onpaint" (histoire d'afficher le nouveau bitmap par dessus le précédent) mais rien trouvé :/
 
S'il y a des experts wxwidget dans le coin, j'accepterai volontiers un coup de main.
 
Merki :)

mood
Publicité
Posté le 05-12-2008 à 17:10:34  profilanswer
 

n°1822592
olivthill
Posté le 05-12-2008 à 17:19:40  profilanswer
 

Je ne connais pas wxWidget, mais dans les applications Windows en C, les lignes suivantes permettent d'éviter un source importante de clignotement qui est le réaffichage du fond juste avant l'affichage du Paint.

     case WM_ERASEBKGND:
         return(1); // Prevent erasing the background to reduce flickering
         break;

Peut-être qu'il existerait un OnEraseBkGnd?

n°1822605
azubal
Posté le 05-12-2008 à 17:40:40  profilanswer
 

Ca marrrccheeee.
Merci olivthill (à tes souhaits).
 
Donc, j'ai ajouté un event EVT_ERASE_BACKGROUND et crée une méthode OnEraseBackGround qui ne fait rien...
 

Code :
  1. BEGIN_EVENT_TABLE(CameraFrame, wxFrame)
  2. EVT_PAINT(OnPaint)
  3. EVT_ERASE_BACKGROUND(CameraFrame::OnEraseBackGround)
  4. END_EVENT_TABLE()
  5. void CameraFrame::OnEraseBackGround(wxEraseEvent& event)
  6. {
  7. // Turlututu...
  8. }


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  [wxWidget] Flickering pendant wxPaintDC

 

Sujets relatifs
wxWidget : agrandir une fenetre[wxWidget] calculer le temps d'éxecution d'un bout de code
[WxWidget] new et pas delete !comment detruire la fenetre de log wxWidget
[wxwidget] tutorial[wxwidget] Dessiner un bouton sur une fenetre.
Exportation d'une bitmap avec wxWidget et DevCppProblème de compilation avec la librairie wxWidget
WxWidget : nom des composantswxWidget et partage de mémoire
Plus de sujets relatifs à : [wxWidget] Flickering pendant wxPaintDC


Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)