2013-02-21 6 views
0

Je développe une application graphique utilisant Embarcadero VCL C++ IDE pour Windows OS. Dans le cadre de ce projet, je dois changer la couleur du bouton par rapport à un état externe. J'ai compris que l'API windows32 ne permettra pas de changer la couleur du bouton. Pourriez-vous s'il vous plaît me suggérer, comment changer la couleur des boutons?Comment changer la couleur du bouton?

+0

Vous voudrez peut-être marquer ceci avec Winapi ou quelque chose de sorte que les gens sachent quelle API vous travaillez. – Cornstalks

Répondre

0

Souhaitez-vous changer la couleur de fond du bouton, ou la couleur de son texte?

Depuis que Windows utilise des thèmes visuels depuis un certain temps, si vous avez chargé commctrl et incluez un fichier manifeste, le bouton sera dessiné en utilisant le thème par défaut (courant).

Les options que je peux voir incluent (a) dessiner l'arrière-plan (b) changer la couleur du texte dans le processus de dessin normal (c) dessiner le bouton sans un thème (dessiner un bouton plat).

Vous pouvez simplement dessiner un bouton bitmap, en changeant le bitmap en fonction de l'état du bouton. Vous pouvez également utiliser un seul bitmap, en le colorant à l'aide de l'espace colorimétrique HSL ou HSV, en fonction de l'état. En ce qui concerne le type plat de bouton, je pense que vous pouvez probablement changer sa couleur de fond de la même manière que vous pouvez changer la couleur du texte - en intervenant pendant le processus de dessin standard et en changeant la couleur de 3D_FACE (ou quoi que ce soit, j'oublie) à ce que vous voulez.

Si vous regardez la calculatrice fournie avec Windows XP, vous pouvez voir un exemple de modification de la couleur du texte.

CodeProject.com a probablement une pile d'articles qui aideraient dans cette entreprise. :)

+0

Merci pour vos suggestions. – srvolatile

+0

Je souhaite changer la couleur de fond (NOT TEXT) du bouton. J'ai créé de petites bitmaps colorées et j'ai essayé de l'afficher sur le bouton bitmap. Mais, cette image bitmap ne couvre pas le bouton total. Je vais regarder dans vos suggestions. Encore une fois merci pour votre réponse. – srvolatile

Questions connexes