Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : pd de cdc en mémoire :( [ Archives / Graphique ] (CoyoteVsBeepBeep)

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é 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 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


Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :

Comparez les prix Nouvelle version

Photothèque Nouveau !



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
Temps d'éxécution de la page : 0,374 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.