Accueil > Forum > > > > Rôle de CreateCompatibleBitmap(...)
Rôle de CreateCompatibleBitmap(...)
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ée 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
|
Derniers Blogs
[WP7] DYNAMICALLY CHANGE STARTUP PAGE[WP7] DYNAMICALLY CHANGE STARTUP PAGE par KooKiz
Let's say that you want to allow the user to customize the startup page of your application. You can easily change the startup page by editing the 'NavigationPage' attribute in the manifest file. But the manifest cannot be modified once the applicatio...
Cliquez pour lire la suite de l'article par KooKiz SESSION SILVERLIGHT 5 3D : SLIDES ET DEMOSSESSION SILVERLIGHT 5 3D : SLIDES ET DEMOS par Groc
Durant les techdays, j'ai eu le plaisir d'animer une session sur Silverlight 5 et la 3D avec Simon Ferquel. Comme promis, voici nos slides et mes démos (celles avec le viper BSG) ici et là. Pour mémoire, les démos utilisent toutes le viper BSG...
Cliquez pour lire la suite de l'article par Groc [TECHDAYS 2012] SESSION WEBMATRIX 2 : LE COUTEAU SUISSE GRATUIT POUR VOS DéVELOPPEMENTS WEB - SLIDES[TECHDAYS 2012] SESSION WEBMATRIX 2 : LE COUTEAU SUISSE GRATUIT POUR VOS DéVELOPPEMENTS WEB - SLIDES par gpommier
Suite à la session que j'ai présenté sur WebMatrix 2, vous pouvez trouver les slides ici, ainsi que les démos en packages nuget : démos1 et démos2 J'en profite pour remercier chaleureusement tous ceux qui sont venus très nombreux à cette sess...
Cliquez pour lire la suite de l'article par gpommier [SHAREPOINT] LES SESSIONS TECHDAYS 2012.[SHAREPOINT] LES SESSIONS TECHDAYS 2012. par Patrick Guimonet
Voici donc pour ceux qui n'ont pas pu venir, ou ceux qui n'ont pas pu toutes les suivre la liste des sessions SharePoint aux TechDays 2012, que je mettrais à jour dès que les liens des vidéo seront disponibles. Ou ici : http...
Cliquez pour lire la suite de l'article par Patrick Guimonet TECHDAYS PARIS 2012 : SESSION PLEINIèRE JOUR 3TECHDAYS PARIS 2012 : SESSION PLEINIèRE JOUR 3 par ROMELARD Fabrice
Speaker: Bernard Ourghanlian Cette session est comme chaque jour transmise en live par BrainSonic, et j'ai donc suivi cette troisième pleinière par ce moyen sur mon iPad . Elle est dédiée comme chaque année à la mise en perspective de l'é...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice
Logiciels
Tribler (2012)TRIBLER (2012)Tribler est un client pair à pair (P2P/Peer-to-Peer) open source avec la capacité de regarder des... Cliquez pour télécharger Tribler OneSwarm (2012)ONESWARM (2012)Le peer-to-peer qui protège votre vie privée, c'est OneSwarm.
Ce logiciel de peer-to-peer crypté... Cliquez pour télécharger OneSwarm PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V8.4)PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V8.4)PONAMEDIA TV DEVIENS HELLLOOO FLASH
LA TV SUR VOTRE ORDINATEUR.
Toute une plateforme Multi... Cliquez pour télécharger PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO Academy System (17.2.1.0)ACADEMY SYSTEM (17.2.1.0)Logiciel de gestion des établissements.
- élèves/étudiants (inscription, dossier, absence...)
-... Cliquez pour télécharger Academy System Easy-Planning (1.0.0.1)EASY-PLANNING (1.0.0.1)Basé sur les mêmes principes que MyPlanning, Easy-Planning permet de créer des plannings sous la ... Cliquez pour télécharger Easy-Planning
|