|
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 : redimenssion image avec hbitmap [ Windows / GUI ] (glipper)
Informations & options pour cette discussion
jeudi 13 juillet 2006 à 00:08:14 |
redimenssion image avec hbitmap

glipper
|
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
|
Crée un autre HBITMAP en utilisant: - GetDC - CreateCompatibleBitmap - CreateCompatibleDC - StretchBlt
|
|
|
jeudi 13 juillet 2006 à 10:47:00 |
Re : redimenssion image avec hbitmap

glipper
|
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
|
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
|
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
|
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
Livres en rapport
|
Téléchargements
Logiciels à télécharger sur le même thème :
|