Harkonnen Modérateur Un modo pour les bannir tous | Nlice a écrit :
Bonjour a tous ! [...] (Sur internet, c'est pas les aides qui manquent, mais j'ai rien compris avec leurs histoire de CDC . . .)
|
... et pourtant ! l'utilisation d'un Device Context (le fameux CDC) est indispensable si tu souhaites effectuer le rendu d'un CBitmap. je vais pas m'étendre sur le sujet, je vais juste te renvoyer sur ce lien pour en apprendre davantage à ce sujet : http://msdn.microsoft.com/en-us/li [...] s.80).aspx une fois que tu as compris le principe, tout coule de source :
Code :
- CString filename("C:\\myPicture.bmp" ); // chemin de ton fichier image
- HBITMAP hBmp = (HBITMAP)::LoadImage(NULL, filename, IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE|LR_CREATEDIBSECTION); // on créé un HBITMAP à partir de ce fichier
- CBitmap bmp; // on déclare un objet CBitmap, qui sera affiché dans ta fenêtre
- bmp.Attach(hBmp); // on initialise cet objet avec le HBITMAP précédent via la fonction Attach() qui permet de binder un HBITMAP à un CBitmap
-
- CClientDC dc(this); // on récupère le Device Context de la fenêtre courante. C'est dans ce Device Context que le dessin va s'effectuer
- CDC bmDC; // on déclare un Device Context (classe CDC)
- bmDC.CreateCompatibleDC(&dc); // on créé un Device Context en mémoire compatible avec le Device Context de la fenêtre courante
- CBitmap *oldBmp = bmDC.SelectObject(&bmp); // on affecte le CBitmap créé plus haut au Device Context créé, en sauvegardant l'ancien dans oldBmp
- BITMAP bi;
- bmp.GetBitmap(&bi); // on récupère les données de ce CBitmap dans un BITMAP, pour pouvoir récupérer sa largeur et sa hauteur, nécessaires à la fonction BitBlt()
- dc.BitBlt(0,0,bi.bmWidth,bi.bmHeight,&bmDC,0,0,SRCCOPY); // et enfin on copie ce bitmap dans le Device Context de la fenêtre courante
- bmDC.SelectObject(oldBmp); // on restaure l'ancien CBitmap
| Je te renvoie à la pierre angulaire de cette opération : la fonction BitBlt (http://msdn.microsoft.com/en-us/library/fcbk8779.aspx). Si tu arrives à comprendre comment fonctionne cette méthode, tout le code que je t'ai posté t'apparaitra limpide. Message édité par Harkonnen le 15-01-2011 à 23:58:29 ---------------
J'ai un string dans l'array (Paris Hilton)
|