begin process at 2012 05 28 05:16:54
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C

 > 

Windows

 > 

Autre

 > 

adapter l'image à la taille du bouton


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

adapter l'image à la taille du bouton

vendredi 31 août 2007 à 11:51:55 | adapter l'image à la taille du bouton

ndubien

Membre Club

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-elle possible en C API Win32?
Si oui comment?

Pour information j'ai déjà trouver comment mettre l'image sur le bouton, je recherche seulement comment faire pour que l'image s'adapte à la taille du bouton.
Mon code actuel:
HBITMAP hBitmap = (HBITMAP)LoadImage( NULL, "taupe.bmp", IMAGE_BITMAP, 0, 0, LR_DEFAULTSIZE | LR_LOADFROMFILE );
bouton = CreateWindowEx(WS_EX_WINDOWEDGE, "BUTTON", "Mon bouton avec image", BS_BITMAP|WS_CHILD|WS_VISIBLE|BS_PUSHBUTTON, 0, 0, 150, 75, hwndPrinc, 0, NULL, NULL );
SendMessage( bouton, BM_SETIMAGE, IMAGE_BITMAP, (long)hBitmap );


Merci d'avance et à bientôt.
Nico
vendredi 31 août 2007 à 15:01:37 | Re : adapter l'image à la taille du bouton

rt15

Membre Club Administrateur CodeS-SourceS
Réponse acceptée !
Salut,

"possible en C API Win32"
Quelques chose sous Windows qui n'est pas possible en C API Win32 est souvent impossible tout court. Presque tout s'appuie là-dessus...

Je sais pas si il y a plus facile, mais tu peux le faire à la main avec la fonction StretchBlt.

vendredi 31 août 2007 à 17:54:21 | Re : adapter l'image à la taille du bouton

ndubien

Membre Club
Bonjour,
Merci pour cette réponse rt15,
Mais mon problème est que la taille du bouton n'est pas fixe, il faudrait donc que la taille de l'image change lorsque la taille du bouton change. Je devrait donc faire une procédure propre au bouton qui lui permette d'avoir une image de taille adaptée. Par conséquent, je garde cette réponse en réserve au cas ou aucune autre ne me parvienne.
Merci...
Nico
vendredi 31 août 2007 à 18:13:08 | Re : adapter l'image à la taille du bouton

SnOOpss

Réponse acceptée !
Pas avec cette methode mais c'est possible en
1 - passant par les ownerdraw
2 - utiliser StretchBlt pour afficher ton image aux dimensions du boutton

Ya un exemple dans une de mes sources
vendredi 31 août 2007 à 21:55:42 | Re : adapter l'image à la taille du bouton

yann_lo_san

Réponse acceptée !
Salut,
Si les MFC ne te dérange pas trop, tu peux traduire le code ici :
http://www.cppfrance.com/code.aspx?ID=38953

En gros, tu  peux ou sous-classer le boutton pour récuperer la WNDPROC ou faire un btn ownerdraw.
Ensuite il faut surcharger le message DRAWITEM et utiliser stretchBlt comme dit plus haut.
vendredi 31 août 2007 à 22:05:00 | Re : adapter l'image à la taille du bouton

ndubien

Membre Club
Réponse acceptée !
Merci tous le monde pour ces réponses, j'ai également trouvé comment utiliser ces diverses techniques grâce Programming Windows by Charles Petzold. II-14-The GDI Bitmap Object.
Nico
vendredi 31 août 2007 à 22:09:24 | Re : adapter l'image à la taille du bouton

ndubien

Membre Club
Réponse acceptée !

Juste pour le livre voilà un aperçu des codes permettant d'afficher des images sur des hwnd et quelqu'ils soient:

// Afficher plusieurs fois la même image ou motif
// cxSource taille de l'image source
// cySource taille de l'image source

     case WM_PAINT:
          hdc = BeginPaint (hwnd, &ps) ;

          switch (iSize)
          {
          case IDM_BIG:
               StretchBlt (hdc, 0, 0, cxClient, cyClient,
                           hdcMem, 0, 0, cxBitmap, cyBitmap, SRCCOPY) ;
               break ;

          case IDM_SMALL:
               for (y = 0 ; y < cyClient ; y += cyBitmap)
               for (x = 0 ; x < cxClient ; x += cxBitmap)
               {
                    BitBlt (hdc, x, y, cxBitmap, cyBitmap,
                            hdcMem, 0, 0, SRCCOPY) ;
               }
               break ;
          }

          EndPaint (hwnd, &ps) ;
          return 0 ;



Encore merci.
Nico
vendredi 31 août 2007 à 22:35:26 | Re : adapter l'image à la taille du bouton

yann_lo_san

Pour etre complet il faudrait rajouter le cas avec une image masque de transparence pour détourage

      ::SelectObject(hdcMem, hBmpMask);
   StretchBlt(hdc, 0, 0, cxClient, cyClient, 
        hdcMem, 0, 0, cxBitmap, cyBitmap, SRCAND);

      ::SelectObject(hdcMem, hBmpNormal);
      StretchBlt(hdc, 0, 0, cxClient, cyClient,
        hdcMem, 0, 0, cxBitmap, cyBitmap, SRCINVERT);

samedi 1 septembre 2007 à 14:16:50 | Re : adapter l'image à la taille du bouton

ndubien

Membre Club
Que signifie "image masque de transparence" ?
samedi 1 septembre 2007 à 14:28:50 | Re : adapter l'image à la taille du bouton

SnOOpss

C'est pour ne pas afficher le "fond du boutton" si par exemple ton boutton est arrondis il ne faut pas afficher les angles pour permettre a la couleur de fond du dialog d'apparaitre autour du boutton.
Par contre je connaissais pas cette technique merci Yann_lo_san moi je faisait surtout avec TransparentBlt().

1 2

Cette discussion est classée dans : bouton, taille, image, bitmap, hbitmap


Répondre à ce message

Sujets en rapport avec ce message

image dans bouton ?? [ par yohann2004 ] Toujours le meme probleme !! J'ai regardé l'exemple du site, les conseils que l'on m'a donné mais ca marche pas !! Voici mon code : CBitmap picture Image sur un bouton [MFC] [ par mfrai02 ] Salut , j'utilise visual studio .net 2003 et les MFC. j'utilise ce bout de code pour afficher une iamge sur un bouton et ça marche bien : HWND hBout 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 redimenssion image avec hbitmap [ par 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 : problème de désactivation d'un bouton [ par Pistol_Pete ] BonjourVoila mon problème:J'ai un bouton sur lequel j'ai appliqué un bmp et lorsque je veux désactiver ce bouton, au lieu de le griser, il remplace l' Image sur bouton? [ par ndubien ] Bonjour,Je cherche à enlever une image mise sur un bouton de la manière suivante:SendMessage( bouton, BM_SETIMAGE, IMAGE_BITMAP, (long)hBitmap );Le bo Déplacer un bitmap [ par mogwai93 ] BonjourJe voudrais coder le fonctionnement du déplacement de "bitmap" que l'on retrouve dans Paint :sélection de zone puis déplacement de l'objet vers image enregistrer le canvas + bitmap [ par athomas ] bonjour, Je vous expose mon problème : J'ai un composant TPicture (une picture box toute simple). Je charge une image dans le bitmapEnsuite, je mets d taille et format d'une image [ par let_me_in ] salut tout le monde, j'ai un proxy qui compresse les images avant de les reenvoyer, le probleme est que certaines images ne contiennent pas leurs tail 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


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
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

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,889 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales