comment ajouter une image bitmap à boutons dans MFC?
Question
Je suis en train d'ajouter une image à un button..I existant ont fait que dans une certaine mesure, le problème est que je peux ajouter une image ownerdrawn mais ne suis pas en mesure d'ajouter l'image extact que je veux .. pour l'exemple voir le code ci-dessous
CButton* pBtn= (CButton*)GetDlgItem(ID_WIZBACK);
pBtn->ModifyStyle( 0, BS_ICON );
HICON hIcn= (HICON)LoadImage(
AfxGetApp()->m_hInstance,
MAKEINTRESOURCE(IDI_ICON3),
IMAGE_ICON,
0,0, // use actual size
LR_DEFAULTCOLOR
);
pBtn->SetIcon( hIcn );
avec le code ci-dessus l'image bitmap am convertir à une icône pour ajouter à mon bouton ... Comment puis-je ajouter l'image exacte Bitmap directement à un existant button.Please me aider frnds ..
La solution
En fait, je fixai la problem..what je l'ai fait est que je remplacé le HICON avec HBITMAP et son parfait état ... essentiellement deux fonctionnerait très bien, mais dans mon cas lorsque je charge l'icône dans le bouton l'arrière-plan de l'icône était ne change pas ... J'ai essayé Bitmap il fonctionne très bien. Maintenant, je travaille sur le positionnement de l'image et d'ajouter du texte ... pense que je pourrais passer par
Autres conseils
Procédure d'attribution de bitmap à bouton dans mfc:
- Créer un objet de bitmap
- bitmap de charge à l'aide de LoadBitmap ()
- Obtenir poignée de bouton en utilisant id et GetDlgItem () méthode
- Modifier le style afin que nous puissions attribuer bitmap à elle
- utilisation SetBitmap () sur la poignée de bouton pour assigner bitmap
Code:
CBitmap bmp;
bmp.LoadBitmap( IDB_BITMAP4 );
CButton* pButton = (CButton* )GetDlgItem(IDC_BUTTON1);
pButton->ModifyStyle(0,BS_BITMAP);
pButton->SetBitmap(bmp);
Vous pouvez sous-classe bouton existant à l'aide CBitmapButton::SubclassWindow
, utilisez LoadBitmaps
.
vous ne savez pas combien cela aidé. Merci d'avoir posté. aussi changer quelques autres choses bitmap et ...
CButton* pBtn= (CButton*)GetDlgItem(ID_MYDIALOG);
pBtn->ModifyStyle( 0, BS_BITMAP );
HBITMAP hIcn= (HBITMAP)LoadImage(
AfxGetApp()->m_hInstance,
MAKEINTRESOURCE(IDB_MYPIC),
IMAGE_BITMAP,
0,0, // use actual size
LR_DEFAULTCOLOR
);
pBtn->SetBitmap( hIcn );
Utilisez les classes bouton du Feature Pack. Ils ont l'appui pour montrer à la fois du texte et des images sur les boutons, le bouton régulier ne peut pas le faire. Regardez le répertoire « échantillons » dans votre répertoire d'installation VS.
Je veux ajouter quelques idées pour la réponse de @Amruta Ghodke:
Vous pouvez redimensionner votre bouton en utilisant les fonctions de GetWindowRect
et SetWindowPos
. Voir un exemple ci-dessous:
CRect rc;
pButton->GetWindowRect(rc);
pButton->SetWindowPos(NULL, rc.left, rc.top, myWidth, myHeight, SWP_NOSENDCHANGING | SWP_NOACTIVATE | SWP_NOZORDER | SWP_NOMOVE);
Si vous souhaitez afficher des images transparentes, utilisez le logiciel Pixelformer pour convertir votre PNGs à Alpha-PGO activé. Vous devrez:
- Aller à image-> Propriétés et
RGB color with alpha channel
set - Exporter le fichier en utilisant le format
A8:R8:G8:B8
etPremultiplied alpha
désactivé etTop-down row order