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

MFC Discussion :

[MFC] Scinttillement vs Double buffering


Sujet :

MFC

  1. #1
    Nouveau membre du Club
    Inscrit en
    Juillet 2004
    Messages
    30
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 30
    Points : 31
    Points
    31
    Par défaut [MFC] Scinttillement vs Double buffering
    Bonjour,
    Je travaille sous VC++ 6 . Jai creé une application dessinant des graphiques.
    Mon souci c est l affichage :
    - Le scinttillement me pose bcp de probleme .
    Alors je me suis renseigné sur double buffering ..

    Je n arrive pas à le mettre en place corectement .
    Lorsque j utilise cette technique l ecran ne se raffraichit plus ..

    Si quelqu un pouvait m aider merci .

  2. #2
    Rédacteur
    Avatar de bigboomshakala
    Homme Profil pro
    Consultant Web .NET
    Inscrit en
    Avril 2004
    Messages
    2 077
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Consultant Web .NET
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2004
    Messages : 2 077
    Points : 2 757
    Points
    2 757
    Par défaut
    Salut,

    Trouvé sur Code Project :

    Flicker Free Drawing In MFC



    Enjoy yourself !

  3. #3
    Nouveau membre du Club
    Inscrit en
    Juillet 2004
    Messages
    30
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 30
    Points : 31
    Points
    31
    Par défaut
    Merci, Je vais voir si jy trouve mon bonheur.

  4. #4
    Membre éclairé
    Avatar de matazz
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    471
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 471
    Points : 668
    Points
    668
    Par défaut
    J'ai pas regardé le lien qu t'as filé bigboomshakala, mais en gros ça consiste (le double buffering) à faire dans une méthode à toi le dessin sur un CDC en mémoire, et à ne faire dans le OnPaint q'un BitBlt de ton CDC mémoire vers le CDC de la dialog.

    De plus pour enlever le flick regarde du côté de l'évenement OnEraseBackground ou OnEraseBkg je sais plus, pour ne pas repeindre avec la couleur systeme de la dialog.
    Qui va piano va sano...

  5. #5
    Nouveau membre du Club
    Inscrit en
    Juillet 2004
    Messages
    30
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 30
    Points : 31
    Points
    31
    Par défaut
    Le probleme c est que j utilise une CDialog et non une CFrameCwd.
    Je n arrive pas a creer une CFrameCwd de maniere statique ce qui m empeche de pouvoir placer des controles.

    Est ce qu il est possible d appliquer la methode de double buffering a une CDialog ou cela sapplique uniquement aux CFrameCwd ?

  6. #6
    Expert éminent sénior

    Homme Profil pro
    pdg
    Inscrit en
    Juin 2003
    Messages
    5 751
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : pdg

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 751
    Points : 10 671
    Points
    10 671
    Billets dans le blog
    3
    Par défaut
    scintillement, ou clignotement (flash blancs) ?

  7. #7
    Nouveau membre du Club
    Inscrit en
    Juillet 2004
    Messages
    30
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 30
    Points : 31
    Points
    31
    Par défaut
    Des flashs blancs exactement ... Comme l effet que retrouve quand on filme un écran de pc ...

  8. #8
    mat.M
    Invité(e)
    Par défaut
    Citation Envoyé par DamessS
    Le probleme c est que j utilise une CDialog et non une CFrameCwd.
    Je n arrive pas a creer une CFrameCwd de maniere statique ce qui m empeche de pouvoir placer des controles.

    Est ce qu il est possible d appliquer la methode de double buffering a une CDialog ou cela sapplique uniquement aux CFrameCwd ?

    ????? On ne dessine pas dans une CFrameWnd !
    Ce type de classe est associé , essentiellement dans une appli MDI ou SDI , à une CDocument et CView .
    Rien à voir avec une CDialog !
    Pour dessiner dans une CDialog , il suffit d'obtenir un DC avec CDialog::GetDC() et surtout appeler CDialog::ReleaseDC()
    Avec le CDC obtenu dessiner en faisant un BitBlt comme le préconise Matazz ou bien un StrechBlit.
    On peut dessiner aussi avec CDialog::OnPaint.

  9. #9
    Expert éminent sénior

    Homme Profil pro
    pdg
    Inscrit en
    Juin 2003
    Messages
    5 751
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : pdg

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 751
    Points : 10 671
    Points
    10 671
    Billets dans le blog
    3
    Par défaut
    Les flash blancs sont dû au fait que lors du dessin, le fond est d'abord effacé avec la brosse de la fenêtre (blanche) puis tu dessines par dessus. Ce qui fait qu'on voit le fond bland un court instant, et ça flash.
    Il faut désactiver l'effacement du fond de la fenêtre (ne rien faire dans WM_ERASEBKGND et renvoyer TRUE). Tu n'auras plus les flash.
    Tu pourras avoir du scintillement alors si tu dessines souvent, et alors faudra faire du double buffering.

  10. #10
    Nouveau membre du Club
    Inscrit en
    Juillet 2004
    Messages
    30
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 30
    Points : 31
    Points
    31
    Par défaut
    Je vous dit un grand merci a tous.
    Ca marche tres bien mieux que ce que j esperais.
    Merci.

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

Discussions similaires

  1. [MFC] Double Buffering
    Par ZaaN dans le forum MFC
    Réponses: 1
    Dernier message: 30/12/2005, 17h10
  2. [GDI+] Double buffer
    Par sebbb dans le forum MFC
    Réponses: 3
    Dernier message: 24/05/2005, 15h19
  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