|
Trouver une ressource
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)
Informations & options pour cette discussion
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
|
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
Livres en rapport
|
Téléchargements
Logiciels à télécharger sur le même thème :
Comparez les prix Nouvelle version
|