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 : redimenssion image avec hbitmap [ Windows / GUI ] (glipper)

jeudi 13 juillet 2006 à 00:08:14 | redimenssion image avec hbitmap

glipper

Membre Club
bonjour,

j'ai reussi à charger une image depuis un fichier, et la faire apparaître dans un boutons (dans une dialogbox). J'ai donc procédé comme ceci :

HBITMAP hbmp;
BITMAP bmp;
hbmp = FileToBitmap("./photos/photo.jpg");     // charge l'image depuis un fichier
GetObject(hbmp,sizeof(bmp),&bmp);      // apporte des informations sur la bitmap dont la taille en pixels

// on redimenssionne le bouton à la taille de la bitmap :
SetWindowPos(GetDlgItem(hwnd,IDC_PHOTO),NULL,20,60,bmp.bmWidth,bmp.bmHeight,SWP_SHOWWINDOW);

// on affiche le bitmap dans le bouton
SendMessage((GetDlgItem(hwnd, IDC_PHOTO)),BM_SETIMAGE,(WPARAM)IMAGE_BITMAP,(LPARAM)(HANDLE)(hbmp));

Mais dans le cas où l'image est trop grosse, je voudrais l'afficher à une taille inférieur à sa taille d'origine (miniature !). La fonction Bitblt fonctionne avec des HDC, moi j'ai un HBITMAP. Comment dois-je m'y prendre ?

Merci,
Glipper

jeudi 13 juillet 2006 à 09:49:43 | Re : redimenssion image avec hbitmap

gagah1

Membre Club
Crée un autre HBITMAP en utilisant:
- GetDC
- CreateCompatibleBitmap
- CreateCompatibleDC
- StretchBlt

jeudi 13 juillet 2006 à 10:47:00 | Re : redimenssion image avec hbitmap

glipper

Membre Club
Voila ce que j'ai fait :

HBITMAP hbmp, hbmp_resized;
BITMAP bmp;
HDC hDC, hDC2;

hbmp = FileToBitmap("./photos/photo.jpg");    // charge l'image depuis un fichier
GetObject(hbmp,sizeof(bmp),&bmp);      // apporte des informations sur la bitmap dont la taille en pixels

hDC = GetDC(hwnd);
hDC2 = CreateCompatibleDC(hDC);
hbmp_resized = CreateCompatibleBitmap(hDC, bmp.bmWidth / 2, bmp.bmHeight / 2);

SelectObject(hDC, hbmp_resized);
SelectObject(hDC2, hbmp);

StretchBlt(hDC, 0, 0, bmp.bmWidth / 2, bmp.bmHeight / 2, hDC2, 0, 0, bmp.bmWidth, bmp.bmHeight, SRCCOPY);

SendMessage((GetDlgItem(hwnd, IDC_PHOTO)), BM_SETIMAGE, (WPARAM)IMAGE_BITMAP, (LPARAM)(HANDLE)(hbmp_resized));

....

L'image n'apparaît pas. Je pense que ça vient du SendMessage à la fin, ou je lui passe
hbmp_resized comme dernier parametre...

Glipper


jeudi 13 juillet 2006 à 11:13:57 | Re : redimenssion image avec hbitmap

gagah1

Membre Club
Réponse acceptée !
hDC = GetDC(hwnd);
hDC2 = CreateCompatibleDC(hDC);
hDC3 = CreateCompatibleDC(hDC);

hbmp_resized = CreateCompatibleBitmap(hDC, bmp.bmWidth / 2, bmp.bmHeight / 2);

SelectObject(hDC3, hbmp_resized);
SelectObject(hDC2, hbmp);

StretchBlt(hDC3, 0, 0, bmp.bmWidth / 2, bmp.bmHeight / 2, hDC2, 0, 0, bmp.bmWidth, bmp.bmHeight, SRCCOPY);



jeudi 13 juillet 2006 à 11:38:34 | Re : redimenssion image avec hbitmap

glipper

Membre Club
Ok j'ai trouvé le probleme. il fallait faire ton code, et ensuite ne pas oublier de reselectionner l'objet par defaut :

hOldBmp2 = (HBITMAP) SelectObject(hDC3, hbmp_resized);
hOldBmp = (HBITMAP) SelectObject(hDC2, hbmp);

....
SelectObject(hDC2, hOldBmp);
SelectObject(hDC3, hOldBmp2);


SendMessage((GetDlgItem(hwnd, IDC_PHOTO)), BM_SETIMAGE, (WPARAM)IMAGE_BITMAP, (LPARAM)(HANDLE)(hbmp_resized));

sinon, il n'apparait rien dans le bouton.

Merci beaucoup pour ton aide gagah1 tu m'as bien aidé.
Glipper

jeudi 13 juillet 2006 à 15:14:48 | Re : redimenssion image avec hbitmap

gagah1

Membre Club
N'oublie pas de supprimer les handles créés après le SendMessage(...):
DeleteDC(hDC2);
DeleteDC(hDC3);
ReleaseDC(hwnd, hDC);
DeleteObject(hbmp_resized);



Cette discussion est classé dans : image, bmp, bitmap, hbitmap, hbmp


Répondre à ce message

Sujets en rapport avec ce message

Charger un BMP avec une OpenFileDialog et l'afficher dans un pictureBox . [ par Dragoon ] Bonjour à tous,Je ne suis pas un spécialiste du C++ et des MFC et je souhaiterais comprendre ce qui ne va pas dans mon programme.Je voudrais que celui chargement dynamique d'image (bitmap ?) [ par Gendal67 ] Bonsoir,J'aimerai savoir si une application peut charger autre chose qu'une image bmp comme une image jpg....genre comme :BMP BITMAP DISCARDABLE "lol. Convertion d'un bitmap 8 bits en un bitmal 24 bits [ par SauCisS ] Bonjour, J'ai parcouru ce forum pour chercher ma réponse, mais sans succès. Alors voici mon problème : Comment à partir d'une image BMP 8 bits niv Redimensionnement image Borland C++ [ par jfouquet ] Bonjour, Je travaille actuellement sous Borland C++ 5. Je suis amené à afficher une image (jpeg,bmp,ico…) dans un TImage bon ça pas de problème. Ma Bitmap et MFC [ par torNADoS ] Salut,je voudrais savoir comment puis je acceder au bits d'une image bitmap sous MFCsuuposons que j ai HBITMAP hBitmap//handlerCBitmap m_bmpBitmap//Im adapter l'image à la taille du bouton [ par ndubien ] Bonjour,Je cherche à mettre une image sur un bouton qui s'adapte automatiquement dés que la taille du bouton change.Tout d'abord cette opération est-e les CGIs PHP et images x-bitmap [ par chinui ] slt tous, j'ai un debutant en programmation avec les CGIs, j'ai u fichier en .c qui génére une image x-bitmap, mais quant j'essais de l'ouvrir avec un Bitmaps splitté qui s'affichent a l'envers [ par milhandril ] Je suis actuellement sur un projet dont une parti necessite un petit editeur de map en 2D. Je prend un bitmap que je "découpe" en Tile de 32*32 (en fa Charger dynamiquement BMP dans un "PICTURE" [ par Nixeus ] Bonjour a tous !Je développe une mfc.Je viens de positionner un controle "PICTURE" sur ma boite de dialogue.Je souhaiterais qu'en fonction de certaine charger image bmp dans tableau [ par nicolovitch ] bonjour à tous, Toujours avec le même problème, j'essaye de charger une image bmp, contenu dans un dossier,  dans un tableau pour la comparer avec


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 : 7,207 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é.