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] probleme de rafraichissement d'une fenetre


Sujet :

MFC

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    69
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 69
    Points : 26
    Points
    26
    Par défaut [MFC] probleme de rafraichissement d'une fenetre
    salut, je crée un application sous visual C++ 6.0 qui me permet d'ouvrir un image, puis ensuite de réaliserr des traitement sur cette image. par exemple, je crée un rectangle de selection sur une zone de mon image, et a l'interieur, je repeint tout les pixel en noir grace a la fonction setPixel. le probleme, c'est que lorsque je met ma fenetre en bouton, et que je la restaure, ma fenetre, est rafraichie et les zones ou j'avais mis les pixel, on repris leur couleur normal.
    En plus, ca me fait la même chose, lorsqu'une boite de dialogue ou une info bulle passe sur une zone ou j'ai changer la couleur des pixel.

    est ce que quelqu'un pourrait me dire comment je pourrait evitait le rafraichissement dans ces cas la?

  2. #2
    Rédacteur
    Avatar de farscape
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    9 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

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

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9 055
    Points : 17 323
    Points
    17 323
    Par défaut
    salut,
    c'est parce que ton action de dessin (setpixel) se fait en dehors du systeme de paint windows. (ondraw,onpaint ,ondrawitem etc .. suivant la fenetre)
    Il faut que tu mémorises tes actions setpixels et que tu rejoues la sequence dans le paint .

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    69
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 69
    Points : 26
    Points
    26
    Par défaut
    mais, comment on fait, pour memoriser une sequence et la rejouer?

  4. #4
    Rédacteur
    Avatar de farscape
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    9 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

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

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9 055
    Points : 17 323
    Points
    17 323
    Par défaut
    et bien tu remplis une surface ?
    il te suffit de definir une structure qui correspond a tes actions et de la mémoriser dans un tableau dynamique:
    exemple:
    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
    35
    36
    37
    class MemoDraw
    {
      MemoDraw(CRect Rect, COLORREF  clr)
      {
         m_Rect=Rect;
         m_clr=clr;
      }
    private:
     CRect        m_Rect;
     COLORREF  m_clr;
    public:
     virtual void Draw(CDC *pdc)
     {
       CBrush Brush(m_clr);
        pDC->FillRect(m_Rect,&Brush);
     }
    };
    class MemoDrawExt : public MemoDraw
    {
           //......
      virtual void Draw(CDC *pdc)
      {
        // customisée
       }
    
    };
    
    CArray < MemoDraw*,MemoDraw* > arMemoDraw; // le tableau 
    
    arMemoDraw.Add(new MemoDraw(Rect,RGB(0,0,0));
    arMemoDraw.Add(new MemoDrawExt(...)); // exemple bien sur 
    
    //....
    //dans le paint ou ondraw etc..
    for(int i=0;i<arMemoDraw.GetSize( );i++)
      arMemoDraw[i]->Draw(pDC);
    c'est un exemple du principe, à adapter

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    69
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 69
    Points : 26
    Points
    26
    Par défaut
    ok, merci pour ton aide

  6. #6
    Membre éprouvé
    Avatar de Gabrielly
    Inscrit en
    Juin 2004
    Messages
    722
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 722
    Points : 1 128
    Points
    1 128
    Par défaut
    A défaut de mémoriser tu redessines à chaque fois dans le code de painture de Windows (ondraw,onpaint ,ondrawitem etc .. suivant la fenetre)

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

Discussions similaires

  1. [MFC]Probleme avec attributs d'une LOGFONT
    Par Fildz dans le forum MFC
    Réponses: 3
    Dernier message: 08/01/2006, 17h59
  2. Probleme ajout label dans une fenetre
    Par sorry60 dans le forum GTK+ avec C & C++
    Réponses: 11
    Dernier message: 05/11/2005, 17h51
  3. [MFC] Probleme d'actualisation d'une listbox
    Par Robleplongeur dans le forum MFC
    Réponses: 5
    Dernier message: 13/05/2004, 14h15
  4. [MFC ]Probleme de linkage d'une dll
    Par Lysis dans le forum MFC
    Réponses: 9
    Dernier message: 22/01/2004, 14h51
  5. [MFC] probleme de rafraichissement d'une image
    Par Vestaproman dans le forum MFC
    Réponses: 6
    Dernier message: 09/01/2004, 23h59

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