begin process at 2012 02 12 13:50:06
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C/C++

 > 

Archives

 > 

Graphique

 > 

pd de cdc en mémoire :(


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

pd de cdc en mémoire :(

jeudi 5 janvier 2006 à 11:36:19 | pd de cdc en mémoire :(

CoyoteVsBeepBeep

Membre Club

hello,
j'ai un petit soucis avec du graphisme.
j'ai une boite de dialogue dans laquelle je veux faire une petite animation (background + une animation par dessus)
j'ai 3 classes.
une classe pour ma boite de dial, une classe background et une classe animation.
dans la classe de ma boite de dial, je crée un timer pour dessiner le fond et l'animation toutes les x millisecondes.
dans ce timer, je prends le device context de ma fenetre, et je crée un contexte compatible en mémoire dans lequel je veux dessiner.
dans ce contexte en mémoire, je dessine le fond et mon animation.
ensuite, je recopie tout en meme temps a l'écran.
pour background et animation, je fais une initialization a partir du device contexte de ma fenetre: je crée des DC compatible en mémoire (variable membre) pour les initialiser avec le fond (qui sera fixe) en une image que je vais modifier au cours du temps (animation)

lorsque je fais tout ca, ben j'ai rien a l'écran.....
voila le code.  je crois que mon explication est grave embrouillé.....  

dans la classe de ma boite de dial, je crée un object background et animation que j'initialise de la maniere suivante:
CDC * pDC=GetDC();
background.Create(pDC);
animation.Create(pDC);
ReleaseDC(pDC);

dans ma classe background, j'ai:
Create(CDC * pDC)
{
   CDCbackground.CreateCompatibleDC(pDC);   
   HBITMAP BMPbackground = LoadBitmap(AfxGetInstanceHandle(), n° ressource interne de mon bmp);
   CDCbackground.SelectObject(BMPbackground);
}
dans ma classe animation:.
Create(CDC * pDC)
{
   CDCAnimation.CreateCompatibleDC(pDC);   
 //je prepare toute mes images   
HBITMAP BMPAnimation[0] = LoadBitmap(AfxGetInstanceHandle(), n° ressource interne de mon bmp);
  HBITMAP BMPAnimation[1] = LoadBitmap(AfxGetInstanceHandle(), n° ressource interne de mon bmp);
  HBITMAP BMPAnimation[2] = LoadBitmap(AfxGetInstanceHandle(), n° ressource interne de mon bmp);
.
.
  //je selectionne la premiere
   CDCAnimation.SelectObject(BMPAnimation[0] );
}

 dans ma boite de dial, je crée un timer.
dans ce timer, je mets:

CDC * pDC=GetDC();
CDC memDC;
menDC.CreateCompatibleDC(pDC);  //créer un contexte en memoire

//dessin du fond dans la mémoire
background.DrawBackGround(&memDC);
//dessin de l'animation dans la mémoire
animation.DrawAnimation(&memDC);

//recopie le context memoire sur l'écran
pDC->BitBlt(rcClient.left,rcClient.top,rcClient.Width(), rcClient.Height(), &memDC, SRCCOPY);
ReleaseDC(pDC);

le but étant de travailler dans la memoire et de tout recopier a la fin

dans ma classe background, j'ai
DrawBackGround(CDC * memdc)
{
   CRect rcClient=GetClientRectangle();
   
   memdc->BitBlt(rcClient.left,rcClient.top,rcClient.Width(), rcClient.Height(), &CDCbackground, SRCCOPY);
}
dans ma class animation, j'ai
DrawBackGround(CDC * memdc)
{
   memdc->BitBlt(animation_position_x, animation_position_x, 32, 32, &CDCAnimation, SRCCOPY);
   //je prepare ma prochaine image (index=variable membre)
   index=(index+1)%16;
  CDCAnimation.SelectObject(BMPAnimation[index] );
}


ps: si dans mon timer je ne passe pas par un contexte intermédiaire (memdc) et que je travaille directement dans pDC (contexte de ma fenetre) ca marche tres bien, mais j'ai un phénomene de flickering. mon image clignote et c'est pas tres beau parce que le fond et l'animation ne sont pas dessiné en meme temps  

help, please......

jeudi 5 janvier 2006 à 12:09:01 | Re : pd de cdc en mémoire :(

CoyoteVsBeepBeep

Membre Club
pour aider a la compréhension voila les sources:

http://www.cppfrance.com/code.aspx?ID=35418


Cette discussion est classée dans : animation, pdc, cdc, memdc, rcclient


Répondre à ce message

Sujets en rapport avec ce message

Surlignage semi transparent dans un Bitmap ? [ par TigWdz ] Bonjour, je voudrais faire du surlignage dans une bitmap. Je m'explique : J'ai une bitmap qui représente du texte, et je veux, à la manière d'un marqu Dessiner dans le CView à partir du CDoc [ par VdkBULL ] Bonjour,Je suis entrain de réaliser un petit jeu qui dessine des carrés sous vc++.Dans mon fichier CDocument je voudrais pouvoir y appeler des fonctio Scintillement graphique [ par coyote ] Je developpe un appli sous VC++6 (avec les MFC).Le probleme est que l'affichage graphique scintille. J'ai pourtant utilise un double buffer.Voici l'ex Accelération affichage image bitmap [ par corben dallas ] Bonjour à tous,Mon problème est le suivant: je cherche à afficher un flux vidéo constitué d'images bitmap dans une fenêtre. Mon code est le suivant:dc Affichage d'un Bitmap [ par vintrouj ] Bonjour,je cherche à afficher une image bitmap préalablement chargé dans un objet de type CBitmap. Le code que j'utilise affiche l'image pendant très device context [ par vintrouj ] Bonjour,Je travaille sur une app SDI et dans la classe doc j'ai besoin d'un pDC compatible avec le pDC qu'utilise OnDraw. Comment dois-je procéder.Mer CDC [ par Chapi72 ] Bonjour,j'ai créé une fenêtre divisée en 3 (avec des splitter) et je voudrais savoir comment afficher une image dans l'une de celle-ci.Plus exactement problème ontexte mémoire et classe [ par gregory6 ] Bonjour Je travaille sous visual C++ et j?ai un petit problème de classe et de contexte mémoire. Je crée une classe ligne que j?appelle ds ma fonction Flash à fond transparent [ par hpotter ] Bonjour,Après de longue recherche sur internet, je viens poser la question ici, peut être pourra-ton me répondre.J'essaye d'intégrer une animation fla exporter une animation en C++ [ par Torhi ]


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 2,902 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales