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

  FORUM HardWare.fr
  Programmation
  C++

  Affichage bitmap synchronisé avec le rafraichissement de l'ecran

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Affichage bitmap synchronisé avec le rafraichissement de l'ecran

n°1312989
sebbis
Posté le 24-02-2006 à 13:39:35  profilanswer
 

Bonjour,
 
Voila mon problème, j'ai créé une application MDI avec les mfc, j'affiche une image bitmap dans une fenetre, cependant, lorsqu'on redimensionne la taille de la fenêtre, la fonction OnDraw est appellé très souvent et réaffiche l'image aussi très souvent, du coup il y a un effet de clipping (je ne suis pas sur que ce sois le mot). Je sais qu'il est possible de faire en sorte de modifier le contexte de periferique (CDC *pDC) à chaques raffraichissement de de l'ecran(et non a chaque fois que la fonction ondraw est affiché) ce qui résoudrait le problème, seulement je ne trouve pas la sintaxe pour faire cela. si quelqu'un a la solution je l'en remercie d'avance (toute autre solution pour résoudre mon problème de clignotement est aussi la bienvenue).
je met le morceau de code que j'utilise: (je ne cherche pas specialement à optimiser le code au niveau de la vitesse d'affichage, c'est une application plutot scientifique, cependant le fait que l'image clignotte un peu a certains moment fait pas très propre lors de présentations donc j'aimerai bien corriger ce problème)
 
 
void CViewerView::OnDraw(CDC* pDC)
{
 CViewerDoc* pDoc = GetDocument();
 ASSERT_VALID(pDoc);
 if (!pDoc)
  return;
 CvImage * working_image=((CViewerDoc *)GetDocument())->GetImage();
 
    if(working_image!=NULL)
 {
  DisplayImage(working_image, pDC) ;
 }
 
 // TODO : ajoutez ici le code de dessin pour les données natives
}
 
 
void CViewerView::DisplayImage( CvImage * in_pCvImage, CDC *pDC)  
{
 // Create BITMAPINFO
 
 BITMAPINFO bmpI;
 
 ZeroMemory(&bmpI.bmiHeader, sizeof(BITMAPINFOHEADER));
 bmpI.bmiHeader.biWidth = in_pCvImage->GetWidth();
 bmpI.bmiHeader.biHeight = -in_pCvImage->GetHeight();
 bmpI.bmiHeader.biPlanes = 1;
 bmpI.bmiHeader.biBitCount = 24;
 bmpI.bmiHeader.biSize = sizeof(BITMAPINFOHEADER);
 
 int status = SetDIBitsToDevice(pDC->GetSafeHdc(),
                             0, 0,
                             in_pCvImage->GetWidth(),in_pCvImage->GetHeight(),
                             0, 0,
                             0, in_pCvImage->GetHeight(),
        in_pCvImage->GetImageData(),
                             &bmpI,
                             DIB_RGB_COLORS);
 
}

mood
Publicité
Posté le 24-02-2006 à 13:39:35  profilanswer
 

n°1313398
rikrispy
Posté le 25-02-2006 à 04:47:20  profilanswer
 

J'aurais une solution, ce serait de déclarer ta fenêtre transparente lors du CreateWindow. Désolé, je ne suis que Win32, j'ai déja touché au MFC, mais plus jamais  :D

n°1313403
retrox
Posté le 25-02-2006 à 10:04:45  profilanswer
 

Le plus simple est de désactiver le raffraichissement du background (OnEraseBackground il me semble).

n°1313410
slash33
Posté le 25-02-2006 à 10:49:19  profilanswer
 

Encore plus simple : modifier les options dans Windows pour ne pas redessiner les fenêtres lors du redimensionnement/déplacement mais faire apparaître le rectangle de focus à la place (comportement Win98 si je ne m'abuse)
 
Mais c'est pas top, je le conçois!

n°1313411
slash33
Posté le 25-02-2006 à 10:54:41  profilanswer
 

Sinon tu peux jongler avec CWnd::SetRedraw

n°1313747
sebbis
Posté le 26-02-2006 à 15:02:54  profilanswer
 

Merci pour ces idées, je vais tester tout ca et voir ce que ca donne.


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

  Affichage bitmap synchronisé avec le rafraichissement de l'ecran

 

Sujets relatifs
Problème affichage infoBulle IE <> Firefoxaffichage page par page, trie
affichage gallerie dans un div impossibleAffichage de vidéos
Redimentionnement de mon menu selon la résolution de l'écran.VC++ -> changer affichage couleur??
Faire une attente entre 2 affichage d'imageproblème d'affichage flash dans IE
affichage de liste <ul></ul> sur IE et FFAide SVP !! Affichage d'un nombre au hasard
Plus de sujets relatifs à : Affichage bitmap synchronisé avec le rafraichissement de l'ecran


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR