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? :-(
Eviter le rafraichissement n'est pas la solution à ton problème.
Tout ce que tu fais sur ton dessin doit être mémorisé. Soit tu retraces tout lors du rafraichissement , WM_ERASEBKGND je crois (et donc tu dois mémoriser les actions que tu fais) soit tu mémorises l'image de ton contexte graphique à chaque modification pour être sur que ce soit cette image qui soit réaffichée lors du rafraichissement (mais dans ce cas tu perds l'information de l'image originale).
C'est la technique du double-buffering: tu calcules tout dans une image en mémoire qui n'est pas affiché, tu mets à jour cette image que lorsque tu en as besoin.
Quand tu mets à jour ton image, tu mets un verrou (un "bool" passé à "true" ) qui indique que l'image est en cours de traitement. A la fin du traitement, tu relaches l'image (le "bool" passé à "false" ). [technique du Mutex]
A chaque rafraichissement de ta fenêtre, si le verrou est activé (c'est à dire que quelque part tu modifies l'image), alors tu n'affiche rien. Et si le verrou est relâché alors tu copie intégralement l'image à ton écran sans autre traitement, ce qui rend la tâche extrêmement rapide.
Vous allez répondre sur un sujet resté inactif pendant plus de 6 mois. Assurez-vous d'apporter des éléments nouveaux à la discussion avant de poursuivre.