begin process at 2010 03 19 14:25:25
  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 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 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 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 ] Animation avec Kdevelop [ par rom71 ] Bonjour all,   Je cherche comment faire une animation sur kdevelop.En faite je dois faire une animation représentant l'état d'un plateau se déplacent Application 2D [ par Tom59247 ] Bonjour, dans le cadre d'un projet d'étude, je dois effectuer une animation 2d d'un automate.Pour l'instant le projet est légèrement flou [^^mad5].Je Animation 2D en Squelettes [ par Gnasty ] [u][b]Salut tout le monde ![/b][/u] Je me suis lancé avec quelques amis dans la création d'un moteur d'animation 2D pour un jeu d'action/plateforme. 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


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mars 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
293031    

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 : 0,296 sec (4)

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