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 : Rôle de CreateCompatibleBitmap(...) [ Windows / GUI ] (julien_boss)

samedi 26 mai 2007 à 17:55:10 | Rôle de CreateCompatibleBitmap(...)

julien_boss

Bonjour, mon code est le suivant : # // création DC et bitmap en mémoire # HDC hMemDC = CreateCompatibleDC(hdc); # HBITMAP hMemBmp = CreateCompatibleBitmap(hdc, 100, 100); # HBITMAP hOldMemBmp = (HBITMAP) SelectObject(hMemDC, hMemBmp); # # // effacement du fond en blanc # HBRUSH hBrush = CreateSolidBrush(RGB(0xFF, 0xFF, 0xFF)); # FillRect(hMemDC, &rcClient, hBrush); # DeleteObject(hBrush); # # // recopie du DC en mémoire, libération des ressources # BitBlt(hdc, 0, 0, sizeDst.cx, sizeDst.cy, hMemDC, 0, 0, SRCCOPY); # SelectObject(hMemDC, hOldMemBmp); # DeleteObject(hMemBmp); # DeleteDC(hMemDC); Lorsque je met la ligne DeleteObject(hMemBmp); avant le BitBlt, je m'attends à ce que rien ne s'affiche comme prévu, seulement ca marche correctement (en apparance, j'imagine). Je me dis alors que hMemBmp ne doit pas trop etre utile, alors j'enleve les lignes associés à ce HBITMAP, mais là s'affiche un rectangle noir (pas ce que je veux). Je met demande alors, quel est le rôle de hMemBmp (donc de CreateCompatibleBitmap(...) ) ? Merci

samedi 26 mai 2007 à 18:08:15 | Re : Rôle de CreateCompatibleBitmap(...)

pepsidrinker

CreateCompatibleBitmap crée une image de format BITMAP (evidemment lol) compatible avec le HDC que tu lui passe en parametre..en gros

Pepsidrinker

samedi 26 mai 2007 à 18:12:14 | Re : Rôle de CreateCompatibleBitmap(...)

julien_boss

oui je sais bien, mais quel utilité ici ? Pourquoi je ne peux pas directement dessiner sur hMemDC ? Et surtout pourquoi je peux afficher le contenu de hMemDC aprés avoir supprimé hMemBmp ?

samedi 26 mai 2007 à 18:29:34 | Re : Rôle de CreateCompatibleBitmap(...)

pepsidrinker

HDC est un "handle device contexte"
Tu ne peut dessiner sur un device context VIDE.
Il doit absolument etre associé avec une image sur laquelle dessiner.

On peut comparer HDC a une table...
et CreateCompatible a la feuille elle meme...
Tu ne peu dessiner sur la table...
place la feuille sur la table , et le tour est joué!

Pepsidrinker

samedi 26 mai 2007 à 18:36:57 | Re : Rôle de CreateCompatibleBitmap(...)

julien_boss

Ok merci, je ne savais pas. Ceci étant dit ca n'explique pas pk je peux dessiner sur hMemDC aprés avoir supprimé hMemBmp ^_^ A moins que SelectObject(...) crée une copie de l'objet (hMemBmp en l'occurrence), et que l'original devienne alors inutile ?

samedi 26 mai 2007 à 18:40:49 | Re : Rôle de CreateCompatibleBitmap(...)

julien_boss

Si je continue avec ta comparaison, je peux reformuler ma question ainsi ^^ : pourquoi est ce que je peux dessiner sur le DC aprés avoir enlever la feuille ?

samedi 26 mai 2007 à 18:47:48 | Re : Rôle de CreateCompatibleBitmap(...)

pepsidrinker


Tu ne peut pas utiliser DeleteObject() tant que le bitmap est associé avec le device contexte .(tant ke ta feuille est sur la table).
Tu doit aussi savoir que quand tu delete un BRUSH ou un PEN , le bitmap associé n'Est pas deleté, il doit l'etre indépendement .

Pepsidrinker

samedi 26 mai 2007 à 19:07:13 | Re : Rôle de CreateCompatibleBitmap(...)

julien_boss

Je ne peux pas ... et pourtant c'est ce que je fais : # // création DC et bitmap en mémoire # HDC hMemDC = CreateCompatibleDC(hdc); # HBITMAP hMemBmp = CreateCompatibleBitmap(hdc, 100, 100); # HBITMAP hOldMemBmp = (HBITMAP) SelectObject(hMemDC, hMemBmp); # # DeleteObject(hMemBmp); //Effacement de la "feuille" ici # # // ...Puis dessin sur la feuille là ... possible ?? # HBRUSH hBrush = CreateSolidBrush(RGB(0xFF, 0xFF, 0xFF)); # FillRect(hMemDC, &rcClient, hBrush); # DeleteObject(hBrush); # # // recopie du DC en mémoire, libération des ressources # BitBlt(hdc, 0, 0, sizeDst.cx, sizeDst.cy, hMemDC, 0, 0, SRCCOPY); # SelectObject(hMemDC, hOldMemBmp); # DeleteDC(hMemDC);

dimanche 27 mai 2007 à 16:35:09 | Re : Rôle de CreateCompatibleBitmap(...)

racpp

Administrateur CodeS-SourceS
Salut,
J'ai déjà remarqué ce genre de comportement avec les régions. J'ai ensuite appris que Windows travaille avec une copie en mémoire de la région supprimée. Il est  probable que  ce  soit pareil  avec  les  autres  objets. 



Cette discussion est classé dans : hdc, hbitmap, hmemdc, hmembmp, createcompatiblebitmap


Répondre à ce message

Sujets en rapport avec ce message

Fuite dans code (ci-joint) [ par Manson ] Salut a tous,voila j'ai fait ce bout de code pour redimensionner une bitmapau moment du WM_PAINT, ca marche bien, mais j'ai l'impressionque j'ai une f pb avec la fonction bitblt [ par torsepoilu ] bonjour, depuis un moment je parcours tous les sites internet et je modifie mon code en consequence, mais cela ne marche toujours pas.voici le code :V Affichage bitmap [ par gregory6 ] GringoBonjour, je suis débutant ss visual C++ et j'aurai besoin d'un peu d'aide. Je crée un projet MFC ds lequel je crée une fenetre. Cette fenetre cr problème avec bitblt [ par gregory6 ] GringoBonjour,je suis développeur débutant sous visual C++ et les MFC. Je cherche à afficher le contenu d'un répertoire sur une page graphique que je Lire le buffer de pixels a partir d'un HBITMAP [ par Kazuya ] Bonjour,j'ai un probleme pour passer un Bitmap en 32bpp,je charge le fichier en memoire (HBITMAP) et ensuite je tente de le modifier, mais le probleme Besoin de precision sur l'utilisation de la fonction pour redimensionner une image Bitmap [ par noetom ] Bonjour, j'ai besoin de redimmensionner une image Bmp et j'ai trouvé les sources pour le faire sur le site ici : http://www.cppfrance.com/code.aspx?i redimentionnement d'image, aidez-moi svp [ par sousou_one ] salut à tous,je veux construire une bitmap par copie d'une région d'une bitmap source, je dois prendre les nouvelles dimensions en sélectionnant la ré [api]Plusieurs images dans un dcMem, ou plusieurs dcMem [ par hoGan ] Bonjour à tous,j'aimerais pouvoir afficher plusieurs images l'une à la suite de l'autre en cliquant plusieurs fois sur un bouton. Voici la façon dont redimensionnement image et qualité [ par mogwai93 ] Bonjour j'utilise la fonction ci-dessous  (copiee sur ce forum) pour redimensionner des bitmaps sauf que dans le cas de la reduction, l'image est de [Win32] Image en background efface les contrôles [ par Taron31 ] Bonjour, dans mon programme je voudrai placer un fond d'écran (à partir d'un BMP), plus précisement ceci dans ma HWND principale, en traitant le messa


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,452 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é.