Dans mes développements, j'avais souvent besoin d'un contrôle de type slider mais plus esthétique, comme un bouton tournant de chaine hifi. J'utilisais auparavant un contrôle acheté, mais j'avais très envie de le remplacer par un contrôle de ma création car je pourrais modifier le source à volonté. Les exemples que j'ai trouvé ne m'ont pas convaincus, notament pour le calcul des angles, j'ai donc décidé d'en écrire un de A à Z. J'espère qu'il vous plaira!
GabKnob est donc un contrôle de type potentiomètre / knob qui peut servir par exemple pour controler un volume, ou tout ce qu'un slider traditionnel peut faire.
Il hérite de la classe UserControl, dessine dans un thread séparé et utilise GDI+.
Voici un petit aperçu des propriétés paramétrables :
- Intérieur en couleur pleine ou dégradé
- Taille du knob
- Couleurs du knob
- Type de déplacements à la souris (horizontal / vertical / circulaire)
- Taille de la bordure
- Couleur de la bordure
- Type de la bordure
- Type du témoin de position
- Taille du témoin de position
- Angle mini / angle max
- Valeur min / valeur max
- Couleur du texte de la valeur
- Conditions d'affichage de la valeur
Bien d'autres ... mais j'ai la flemme de tout écrire ^^
Un projet de test est inclu (il ne teste pas toutes les possibilités pour le moment mais reste un bon aperçu).
Ce contrôle n'est pas figé : je le mettrai à jour régulièrement. Et tout le monde peut s'en servir et le modifier à titre privé.
Vos suggestions sont les bienvenues! :) Et aussi veuillez me reporter les bugs si vous en trouvez.
!!! Remarques !!!
Pour récupérer la valeur retournée par le knob en ayant des performances OK, il FAUT passer par l'évenement KnobValueChanged et ne pas oublier de placer un petit My.Application.DoEvents() à la fin du code de l'évènement. Ne pas passer par la propriété KnobValeur.