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 :

un vrai Double buffering


Sujet :

wxWidgets

  1. #1
    Membre régulier
    Inscrit en
    Novembre 2002
    Messages
    291
    Détails du profil
    Informations forums :
    Inscription : Novembre 2002
    Messages : 291
    Points : 81
    Points
    81
    Par défaut un vrai Double buffering
    Bonjour,

    Voilà j'essaye d'afficher une image qui s'agrandi en tournant.

    J'ai donc un timer, un angle et une taille.

    voici mon code où j'essaye que ca ne clignote pas :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    void MaFenetre::onPAint(..)
    {
      wxBufferedPaintDC dc(this);
     
      PrepareDC(dc);
     
      mImage->Rescale(mLongueur, mHauteur);
      wxImage img = mImage->Rotate(mAngle, wxPoint(mLongueur/2, mHauteur/2));
     
      dc.DrawBitmap(wxBitmap(&img), 10, 100);
    }
    (toutes les 500ms mAngle, mLongueur et mHauteur sont augmentés)

    mais ca clignote quand meme !!!! donc mon double buffering ne marche pas

    quelqu'un pourrait il m'aider ?

    merci

  2. #2
    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
    Peut être en essayant de passer un bitmap assez grand pour faire tes créations / modification et donc en utilisant le constructeur comme celui ci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    wxBufferedPaintDC(wxWindow *window, const wxBitmap& buffer, int style = wxBUFFER_CLIENT_AREA)
    Ainsi tu éviteras au constructeur de créer et supprimer tout le temps le buffer, ce qui augmente les perfs et peut éventuellement résoudre ton problème.

  3. #3
    Membre régulier
    Inscrit en
    Novembre 2002
    Messages
    291
    Détails du profil
    Informations forums :
    Inscription : Novembre 2002
    Messages : 291
    Points : 81
    Points
    81
    Par défaut
    je mets quoi en parametre ?

    car en fait je dessine plusieurs images qui tournent...

  4. #4
    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
    Ben comme tu fais habituellement, le parent et ensuite, tu donnes un bitmap qui est au moins aussi grand que la taille de toutes tes images.

  5. #5
    Membre régulier
    Inscrit en
    Novembre 2002
    Messages
    291
    Détails du profil
    Informations forums :
    Inscription : Novembre 2002
    Messages : 291
    Points : 81
    Points
    81
    Par défaut
    voilà j'ai fait ca :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    void MaFenetre::onPAint(..)
    {
      wxBufferedPaintDC dc(this, mBuffer);
     
      PrepareDC(dc);
     
      mImage->Rescale(mLongueur, mHauteur);
      wxImage img = mImage->Rotate(mAngle, wxPoint(mLongueur/2, mHauteur/2));
     
      dc.DrawBitmap(wxBitmap(&img), 10, 100);
    }
    mBuffer etant crée dans le constructeur avec la taille de la fenetre (car j'ai des carré un peu partout) mais ca ne change rien.....

  6. #6
    Membre éclairé

    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    717
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 717
    Points : 858
    Points
    858
    Par défaut
    As-tu bien supprimé l'effacement du fond (EVT_ERASE_BACKGROUND et fonction OnEraseBackground() vide) ?

Discussions similaires

  1. [GDI+] Double buffer
    Par sebbb dans le forum MFC
    Réponses: 3
    Dernier message: 24/05/2005, 15h19
  2. [MFC] Scinttillement vs Double buffering
    Par DamessS dans le forum MFC
    Réponses: 9
    Dernier message: 07/04/2005, 09h01
  3. Réponses: 1
    Dernier message: 04/04/2005, 11h19
  4. Réponses: 7
    Dernier message: 03/08/2004, 16h33
  5. [Exception]Double buffering & NullPointerException
    Par Seiya dans le forum API standards et tierces
    Réponses: 25
    Dernier message: 09/07/2004, 18h41

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