CONTROL VUMÈTRE 100% PERSONNALISABLE

cs_bigboss9 Messages postés 162 Date d'inscription jeudi 22 janvier 2004 Statut Membre Dernière intervention 20 juillet 2013 - 31 mars 2010 à 12:27
Adn56 Messages postés 1172 Date d'inscription jeudi 24 mai 2007 Statut Membre Dernière intervention 28 septembre 2013 - 11 avril 2011 à 18:48
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/51534-control-vumetre-100-personnalisable

Adn56 Messages postés 1172 Date d'inscription jeudi 24 mai 2007 Statut Membre Dernière intervention 28 septembre 2013 1
11 avril 2011 à 18:48
ouhaou, que t'arrive t'il bigboss un an aprés ? tu programme toujours j'imagine ? donne des news. ciao Sieur
cs_bigboss9 Messages postés 162 Date d'inscription jeudi 22 janvier 2004 Statut Membre Dernière intervention 20 juillet 2013
11 avril 2011 à 11:33
Ok, j'ai été pédant. mea culpa les gars.
cs_bigboss9 Messages postés 162 Date d'inscription jeudi 22 janvier 2004 Statut Membre Dernière intervention 20 juillet 2013
10 avril 2010 à 10:17
En effet, je suis d'accord. Et le but d'un VuMètre est d'afficher une valeur qui DOIT être comprise dans un minimum et un maximum ... Ce serait dommage de passer à coté de ca. Car sinon, tu rends ton control caduc. On mesure la température de 0 à 100° par exemple mais le son généralement de 0 à 6dB dans un logiciel. Ou encore une température de 0 à 65F ... bref, c'est utile car cela permet de définir l'echelle de mesure.
Adn56 Messages postés 1172 Date d'inscription jeudi 24 mai 2007 Statut Membre Dernière intervention 28 septembre 2013 1
9 avril 2010 à 07:41
biensur luciol, comme te l'explique bigboss overrider permet simplement de s'en servir ! Toutes les méthodes du control hérité sont disponibles (c'est le principe de l'héritage). C'est d'ailleurs pour cela qu'il te conseil trés justement de prendre le controle le plus proche de ton besoin et d'éviter ceux qui sont remplis de méthodes inutile dans ton cas.
Luciol44 Messages postés 28 Date d'inscription dimanche 16 octobre 2005 Statut Membre Dernière intervention 28 mars 2010
8 avril 2010 à 23:05
Merci pour l'explication sur heritage. comme je n'est pas besoin d'avoir de min et de max mais juste de value et des bordure en 3D, j'aurai pu utiliser un label pour dessiner dedans et fabriquer la propriete value. enfin pour le moment ca marche tres bien avec le picturebox et ca consomme rien alors pour moi ca me va. je vais publier la nouvel version demain quand j'aurai un peu de temps.

PS: j'ai pas overrider dans mon control est il herite quand meme de toutes les proprietes du picturebox?
cs_bigboss9 Messages postés 162 Date d'inscription jeudi 22 janvier 2004 Statut Membre Dernière intervention 20 juillet 2013
8 avril 2010 à 20:18
Pour ton PS, c'est juste. Cependant, Invalidate() ne sert pas à cela. Ca n'est donc pas correct d'un point de vue théorique. La procédure derrière n'est pas la même et met plus de temps qu'un Refresh.

Pour le picturebox, tu pourrais même hériter d'un DataGridView aussi ... Y'à pas plus lourd comme controle... Non, on hérite du controle le plus proche de ce que l'on veut faire. Ici, c'est un Progressbar qui est le plus proche. Overrider consiste à faire siens toutes les propriétés d'un controle. On choisi donc ce controle en fonction de ses propriétés qui correspondent au mieux à un besoin. Un vumètre doit posséder fondamentalement un Maximum, Minimum et Value. Le seul control qui s'en approche, c'est le ProgressBar. Le reste, ca ne sert à rien. C'est une erreur de ma part d'avoir utilisé un Trackbar.
Luciol44 Messages postés 28 Date d'inscription dimanche 16 octobre 2005 Statut Membre Dernière intervention 28 mars 2010
8 avril 2010 à 15:19
Bigboss,
je suis en se moment de revoir mon vumetre avec ta methode a partir d'un heritage de picturebox (parce qu'il faut bien quelque a heriter et que pour mon control c'est ce qui me parait le plus logic). je ne passe pas par ta methode overrides mais juste par la methode paint du control (donc plus besoin de la bitmap tampon). je te remerci pour ton aide.

PS: un invalidate() sans rien dans les parentheses fait la meme chose qu'un Refresh()
cs_bigboss9 Messages postés 162 Date d'inscription jeudi 22 janvier 2004 Statut Membre Dernière intervention 20 juillet 2013
8 avril 2010 à 15:03
Pour finir, je n'utilise pas de méthode graphique, j'overrides la méthode du controle. Plus simple lorsque l'on a des choses basiques à dessiner, et surtout moins couteux en mémoire.
cs_bigboss9 Messages postés 162 Date d'inscription jeudi 22 janvier 2004 Statut Membre Dernière intervention 20 juillet 2013
8 avril 2010 à 15:02
Ok, bon, pas grand chose à dire si ce n'est que normalement, un application qui doit afficher des valeurs sur un graphique ne doit avoir qu'une seul timer, celui qui envoit les données au controle ... si le timer est arrêté, il suffirait d'envoyer 0 au control pour le remttre à zéro. Donc, je divise le problème par deux, n'ayant plus besoin que d'un seul timer, ce qui semble normal.

Pour ce qui est des marges, c'est simple. J'ai hérité le control Trackbar qui possède lui aussi des marges. J'aurais pu les supprimer mais alors, on aurait pas pu slider correctement.

Conseil : Pour enlever le problème des marges, changez le type du controle : Héritez un Progressbar qui possède également les propriétés Minimum, Maximum et Value. Puis à l'aide du théorème de Thalès, calculez la valeur en % par rapport à la position de la souris à si MouseDown à l'évènement MouseUp.

Voilou, rien de difficile en somme. Bon courage.

Si j'ai le temps, je mettrais à jour.

PS: Pour information, héritez vos controles, controlez les fuites de mémoire et vous divisez le consommation de votre controle par 3 voir 4 selon les cas.
Luciol44 Messages postés 28 Date d'inscription dimanche 16 octobre 2005 Statut Membre Dernière intervention 28 mars 2010
5 avril 2010 à 18:43
salut bigboss,
je n'ai pas regardé ton code mais juste son foncionnement. deja c bien tu n'utilise pas de timer pour faire la gestion de ton max mais quand tu n'envoie plus de valeur a ton control, le max reste figé donc tu as decalé le probleme (le timer n'est plus dans ton control mais sur la forme). si non sur un vumetre les regions de couleur represente des zonne bien deffini et fixe donc normalement pour un vumetre on ne peu pas y toucher. autrement tu as fait un jolie boulot sur les ombrages, le seul point negatif sur ton visuel est les marges en haut et en bas. c'est juste que c pas jolie a voir. je vais regarder un peu plus en detail pour comprendre comment est fait ta methode graphique.
fabyFAROSCREEN Messages postés 4 Date d'inscription mercredi 10 août 2005 Statut Membre Dernière intervention 2 avril 2010
2 avril 2010 à 05:26
Bonjour,
Depuis des années je me rend sur VBFrance et avec plaisir je vois le travail des programmeurs ou "codeurs" et c'est de cette manière que je progresse dans mon coin. Si une source me plait, je m'en sers ou je m'en inspire, dans le cadre pro et/ou perso.
Dommage de trouver des commentaires de "PRO" qui frôlent l'indigestion.
Cela dit, j'ai bien aimé la source, le ping-pong verbal BEAUCOUP moins.
@++
ps. Cela fait plus de 30 ans je code et j'apprends tous les jours ;-)
moncompte2000 Messages postés 1 Date d'inscription samedi 8 mars 2003 Statut Membre Dernière intervention 1 avril 2010
1 avril 2010 à 09:43
Bonjour
Code Sympa mais vos commentaires sont a chier et rien est constructif.
Bye
cs_bigboss9 Messages postés 162 Date d'inscription jeudi 22 janvier 2004 Statut Membre Dernière intervention 20 juillet 2013
31 mars 2010 à 20:39
Concernant la Marge Top & Bottom, cela est du au fait que le controle TrackBar commence à (Hauteur-10) et se termine à 10 pixels. Donc, il nous faut une marge de 10 pixels à chaque extrémité. Concernant Left & Right, c'était simplement pour le rendre graphiquement plus équilibré. Pour les % dans les régions, tu as raison. En même temps, j'ai codé ça à l'arrache, et donc je ne devrais pas procéder comme ça en théorie... Mais il faudrait revoir totalement le système de dessin pour changer cela. En effet, le petit effet de Fading est sympa, pas bien difficile à coder.

Pour info, je vais vers 22 ans et j'ai encore toute mes dents. Concernant mes anciens codes, c'est du temps ou j'ai appris seul. Un jour, un excellent programmeur est venu m'aider, et j'ai amélioré le niveau. Je ne suis jamais de bon humeur dans les commentaires, il va falloir t'y habituer. Y'à trop de branleurs ici et ce site est le ramassis des programmeurs VB qui n'ont pas vraiment envie de s'y mettre ... Certains codes me donnent envie de gerber ... Soyons clair, je n'apprécie pas nombre des programmeurs de ce site, non pas parce ce qu'ils font est de la merde, mais parce qu'ils n'ont pas conscience que c'est de la merde. Il n'y a que ce qui bossent qui réussissent. Du coté du C#, ils l'ont compris. Bien entendu, ça n'est pas totalement la faute des programmeurs... car ce site n'a pas évolué comme il aurait du, et que le .Net est venu qu'en annexe du VB6 et qu'on a pas assez poussé les gens vers le .Net ... Tout ça pour dire quoi ? Que quand on vois ce que les gens codent, ça ne donne pas envie d'être gentil, tout au plus d'essayer de relever le niveau... C'est ce que j'essaye de faire, malgré ma mauvaise humeur. Cette source, c'est "Cadeau", histoire de justifier mes commentaires dans l'autre source.

Quand je critique un mauvais code, je critique tous les mauvais codes. Ca n'est pas seulement contre son auteur mais aussi contre tous ceux qui auraient l'idée de refaire la même merde.

Pour finir, je lis chaque commentaire entièrement. Je ne doute pas de ton expérience. Je t'ai peut être froissé mais c'est le risque et j'assume. Marre de tous ces idiots qui cherchent à justifier leurs incompétence derrière leur 'pseudo ignorance'.
Adn56 Messages postés 1172 Date d'inscription jeudi 24 mai 2007 Statut Membre Dernière intervention 28 septembre 2013 1
31 mars 2010 à 18:46
décidément t'es vraiment un pti branleur, comment oses tu me débiner du haut de tes 21 ans. (grande gueule que je suis ? tu sais de quoi tu parles à lire tes commentaires).
Tu veux relire les commentaires de tes anciens codes pour rire (ou pleurer).
Mes codes sont ce qu'ils sont, je suis pas informaticien, mais j'ai une longue expérience dans mon métier. Le respect en fait parti ! tu ne lis même pas, tu survoles à peine mes posts histoire de te conforter dans cette état d'ésprit revenchard.
C'est trop nul comme topic. je me tais pour ne pas aggraver les choses, je vois que finalement il y à rien de bon à tirer de toi.
ADIEU BOULET
Adn56 Messages postés 1172 Date d'inscription jeudi 24 mai 2007 Statut Membre Dernière intervention 28 septembre 2013 1
31 mars 2010 à 18:37
petit truc en testant, qui se révéle être plutôt sympa niveau effet, la leftandrightmarging ne prends pas en compte le niveau haut du VU si showselectioncurseur est à true, mais encore une fois cela fait un pti effet des plus zouli. cool
Donc ne le corrige pas, ou alors avec un %. essaye marge 5, puis marge 20 pour le voir. ++
continuons sur les améliorations, le peakbar devrait être à mon sens de la même couleur que la région où il se déclenche, voila un pti challenge à relever (je sais que tu dois aimer cela ^^)
les pourcent région ne s'additionne pas , si je place 20% pour R1 et 20% pour R2, alors R2 disparait, pas pratique, non ?

pour finir je trouve que l'alpha sur l'effacement du peakbar est du plus belle effet, cela vaut bien 8/10, mais n'en tiens pas compte vu mon niveau de jugement ;-)
cs_bigboss9 Messages postés 162 Date d'inscription jeudi 22 janvier 2004 Statut Membre Dernière intervention 20 juillet 2013
31 mars 2010 à 18:33
PS: Merci pour la note, mais je n'attends pas d'être bien noté pour être satisfait de mon travail.
cs_bigboss9 Messages postés 162 Date d'inscription jeudi 22 janvier 2004 Statut Membre Dernière intervention 20 juillet 2013
31 mars 2010 à 18:31
ADN56, j'taime bien tu sais ... Parce que t'as une grande gueule mais niveau codage, c'est franchement pas jojo. Quant à ton ordinateur, si on programmait pour les derniers PC pourris, j'écrirais encore des programmes en 16bits. Pour les effets, ils sont desactivables. Pour information, le scintillement est dû au fait que tu n'utilises pas de DoubleBuffer. Le temps que l'image soit dessinée, l'image à déjà été effacée et provoque une rupture d'affichage. Quant au BackColor, je m'en fiche totalement. Ca n'est pas un controle commercial mais didactique.

Quant à l'utilisation de Refresh plutot que Invalidate, je te laisse aller voir dans la MSDN à quoi cela correspond. Tu reviendras plus savant nous voir.

Pour information rapide, Refresh() sert à rafraichir entièrement ClientRectangle. Tandis que Invalidate est une étape avant le rafraichissement. Cela invalide une partie, un code bien optimisé se chargeant de redessiner uniquement les zones qui ont besoin de l'être, c'est à dire celles qui ont été déclarées Invalidées par X.Invalidate(rect as Rectangle) (fonctionne aussi avec une Région).

Souvent copié, jamais égalé,
BigBoss9.
Adn56 Messages postés 1172 Date d'inscription jeudi 24 mai 2007 Statut Membre Dernière intervention 28 septembre 2013 1
31 mars 2010 à 18:16
tu n'a pas lu ma source grand patron car justement je ne dessine pas sur bitmap ! tu me confonds avec luciol, allez un pti xanax et cela ira mieux, tu est toujours sur la défencive, même lorsque ton travail est bon, regarde ma note, pfff
allez zou plus là.
Adn56 Messages postés 1172 Date d'inscription jeudi 24 mai 2007 Statut Membre Dernière intervention 28 septembre 2013 1
31 mars 2010 à 18:14
1-hachage de la zone de remplissage, le texte lui est nickel
2-15% de ressource CPU sur un Q8200 / 2Mo Ram / Cm asus, avec seulement 12 Vumétres à 50ms de timer (pour info 2% de CPu avec 3x20 Vu-métres, mais sans dégradé, et avec un peu de scintillement à l'affichage)
3-Le backcolor du control n'est plus actif du coup et si la form n'est pas noir, c'est vraiment pas chouette.
4-refresh, et le invalidate ?

Conclusion rapide (pour te parodier)
Bonne idée et bonne méthode de dessin
niveau initié (tout de même pas)
Total 8/10, bon boulot, mais peut mieux faire en se foulant un peu...^____^
cs_bigboss9 Messages postés 162 Date d'inscription jeudi 22 janvier 2004 Statut Membre Dernière intervention 20 juillet 2013
31 mars 2010 à 18:06
Ah oui ... Tiens, donc, prend la peine de démarrer ton Gestionnaire de Tâches et de regarder combien pèse un contrôle ... RIEN A VOIR ... (si je me souviens, j'atteignait facilement les 80 000Ko avec ta source pour 10 contrôles posés sur un formulaire, pas mal hein ...) On en reparle ensuite, dès que t'as saisi que ta remarque était stupide. Pour info, je ne dessine pas dans un Bitmap. La méthode n'est donc pas pas identique ...

Non mais sérieusement, prend la peine de lire le code source avant de parler ...
Adn56 Messages postés 1172 Date d'inscription jeudi 24 mai 2007 Statut Membre Dernière intervention 28 septembre 2013 1
31 mars 2010 à 17:51
Voila bien le genre de commentaire qui ne donne pas du tout envie de lire ta source, dommage pour une fois que tu fais profiter de ton immense savoir.....

Ta méthode de dessin est indentique aux miennes, tu auras donc les mêmes reproches que celle que j'ai eu sur ma version pour luciol (désactivé à ma demande)
cs_bigboss9 Messages postés 162 Date d'inscription jeudi 22 janvier 2004 Statut Membre Dernière intervention 20 juillet 2013
31 mars 2010 à 12:27
Et encore, j'me suis pas foulé ...
Rejoignez-nous