2009-11-22 9 views
0

Vous connaissez les boutons du sélecteur de couleur avec un petit rectangle, affichant la couleur actuellement sélectionnée? Comme dans les produits MS Office.Meilleure façon de créer un bouton affichant la couleur sélectionnée

Je voudrais en implémenter un en utilisant C#/.NET. J'ai donc une belle petite icône avec un rectangle de couleur magenta (qui est pour afficher la couleur) et un fond transparent.

Je peux penser à deux façons comment cela pourrait se faire, mais ils sont tous les deux pas vraiment élégant:

  • Modifier l'icône en utilisant le logiciel graphique pour avoir une couleur de fond solide au lieu de la transparence et la redimensionner à être exactement aussi grand que le bouton qui le contient. Cela permettrait d'utiliser TransparentColor = Manenta en combinaison avec le bouton Background, cependant l'icône devrait être éditée à chaque fois que la taille du bouton, la barre d'outils BackColor ou autre chose change.
  • Modifiez l'icône par programmation chaque fois qu'une nouvelle couleur est sélectionnée. Ça marcherait, mais cela me semble un peu complexe (en termes de développement et de performance).

Donc. Peut-être que je manque la façon évidente et facile de mettre en œuvre un tel bouton? Merci d'avance pour toute allusion/suggestion/inspiration :)

Répondre

0

Évidemment, il n'y a pas de solution élégante. J'ai choisi le premier, utilisant la transparence PNG et BackColor, avec l'inconvénient de devoir colorier l'arrière-plan png comme l'arrière-plan du panneau contenant. Semble être le moins douloureux de cette façon.

0

Vous pouvez facilement remplacer la méthode OnPaint et dessiner un rectangle avec la couleur de votre choix.

+0

Vous avez raison, ce ne serait pas trop complexe. Mais cela signifierait aussi changer le code quand l'icône change :(Avec la propriété Image # TransparentColor et toutes ces icônes magenta-ed là-bas, j'espère qu'il y avait une manière élégante de résoudre ceci (que je suis juste aveugle à voir, peut-être): - / –

0

Je ne vois aucune raison d'utiliser une icône, un fichier PNG ou toute autre ressource d'image pour cela. Cela semble être un gaspillage complet de ressources. Dessinez simplement les boîtes à partir du code, en dessinant les couleurs qui font actuellement partie de la liste des couleurs du contrôle. Idéalement, votre contrôle permettra à l'appelant d'ajouter ses propres couleurs. Et cela n'exigerait pas de bidouiller avec des images.

Je viens d'utiliser un owner-draw combo box when I did this, mais j'ai dessiné une boîte de couleur comme je le décris. Très facile.

Questions connexes