GRAPHIQUE EN TEMPS RÉEL (AVEC LISSAGE DES COURBES ET ANTIALIAS)

MadM@tt Messages postés 2167 Date d'inscription mardi 11 novembre 2003 Statut Membre Dernière intervention 16 juillet 2009 - 11 août 2006 à 20:09
Whismeril Messages postés 19028 Date d'inscription mardi 11 mars 2003 Statut Non membre Dernière intervention 24 avril 2024 - 25 déc. 2017 à 09:14
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/39061-graphique-en-temps-reel-avec-lissage-des-courbes-et-antialias

Whismeril Messages postés 19028 Date d'inscription mardi 11 mars 2003 Statut Non membre Dernière intervention 24 avril 2024 656
25 déc. 2017 à 09:14
Bonjour, c’est une source VB6, c’est donc bien avec VB6 que tu essayes de l’ouvrir?
salut je n'arrive pas à ouvrir votre projet sur mon ordi
Adn56 Messages postés 1172 Date d'inscription jeudi 24 mai 2007 Statut Membre Dernière intervention 28 septembre 2013 1
6 mars 2009 à 19:00
@ mad :nannan ya des source pour VB/C/C++, mais bon passons puisque nous ne sommes plus étudiant ^^
@ amoniaque : ok, donc pour les non INE pas moyen, bon spa grave ^^
OUPS, erreur de lecture lorsque je parle de XP je pensais expérience ^^ pas l'os windoze lol, dsl pour la méprise . My bad Expérience whit NI ? ben c'est simple je cherchais pour mon taff d'automaticien un revendeur de solution d'I/O tor et ana sur PC et donc je les ai contacté...Je me suis fais gentilement boté en touche car je n'avais aucun 'avenir' pour eux ! Donc ....comercialement à chier, car depuis je développe plein d'appli indus sans eux avec des cartes 'free' comme la VM110 de velleman qui ne coute rien (enfin 50€ mais bon ...)
Et voila pour la petite histoire ;)
MadM@tt Messages postés 2167 Date d'inscription mardi 11 novembre 2003 Statut Membre Dernière intervention 16 juillet 2009 1
6 mars 2009 à 18:21
Je parlais de ma source > elle est faite pour VB6. A moins que je me trompe, la version de NI marche pour VB.net
amoniaque Messages postés 20 Date d'inscription vendredi 23 novembre 2007 Statut Membre Dernière intervention 7 avril 2009
6 mars 2009 à 17:49
Ouais je suis d'accord, c'est très cher !
Autant d'un point de vu logiciel que matériel ... Ce n'est vraiment pas donné ! J'ai la chance de travailler pour des clients qui ne veulent que du NI (pérennité du matériel ...) donc je peux me faire plaisir au travail !

Tu as eu quoi comme genre de problème avec XP et NI ?!

Pour ce qui est de la version de démo il faut que tu sois étudiant ... A partir là il suffit de contacter NI avec ton n° INE et tu auras droit à une licence d'un an.

Chose que j'ai faite pour mon année de licence ! Et j'ai eu droit à un joli CD avec un petit manuel. ET pareil pour LabView.

++
amoniaque Messages postés 20 Date d'inscription vendredi 23 novembre 2007 Statut Membre Dernière intervention 7 avril 2009
6 mars 2009 à 17:33
Et aussi VC# .net, VB6, et VC++6 ...
Adn56 Messages postés 1172 Date d'inscription jeudi 24 mai 2007 Statut Membre Dernière intervention 28 septembre 2013 1
6 mars 2009 à 17:22
dsl pour le double post mais voila on ne peut toujours pas éditer nos messages :/
//Measurement Studio for Visual Studio 2003/2005/2008 Evaluation
Download this 30-day evaluation of Measurement Studio for Visual Studio .NET 2003/2005/2008* to create powerful test and measurement applications.


Complétez le formulaire ci-dessous pour continuer ou connectez-vous avec votre profil sur la droite
//
si tu as un lien pour la version démo je veux bien essayer LOL
++
Adn56 Messages postés 1172 Date d'inscription jeudi 24 mai 2007 Statut Membre Dernière intervention 28 septembre 2013 1
6 mars 2009 à 17:16
@ MadM@tt : ton ocx fonctionne trés bien en VB.NET ;) sinon je l'utiliserai pas :p Donc encore merci !
@ amoniaque : je n'ai pris le temps de lire que c'était gratos pour les particuliers ! donc DSL.
Je reste sur une image trés désagréable de NI ! c'est perso et cela vient de mon XP au taff, donc rien à voir avec ton post :)
Mais je vais tout de m^me l'essayer pour voir, je sais qu'ils font du bon boulot, mais commercialement il se la péte et j'ai horreur de ça !
@++ [mode pourissage de topic = false]
MadM@tt Messages postés 2167 Date d'inscription mardi 11 novembre 2003 Statut Membre Dernière intervention 16 juillet 2009 1
6 mars 2009 à 15:46
De toute façon c'est pour VB.Net
amoniaque Messages postés 20 Date d'inscription vendredi 23 novembre 2007 Statut Membre Dernière intervention 7 avril 2009
6 mars 2009 à 15:41
Excuse moi d'avoir pu apporter une idée à la chose ...

La version de démonstration pour étudiant est gratuite (il y a juste le logo de NI qui indique que c'est une version de démo !) C'est comme ça que j'ai découvert cette suite et contrairement à ce que tu crois, ça n'a rien de réservé aux professionnels (hormis le prix exorbitant je te l'accorde!). Ça a surtout le gros avantage de donner quelque chose de propre, simple à utiliser et implanter et ceci rapidement (à part pour les prog. personnelles, le temps est important non?!).

A chacun sa manière de faire après tout...
Adn56 Messages postés 1172 Date d'inscription jeudi 24 mai 2007 Statut Membre Dernière intervention 28 septembre 2013 1
6 mars 2009 à 12:37
Déja pour le plaisir d'apprendre à le faire soi même Mais aussi (et surtout) pour ne pas payer 500€ pour un outil réservé au proféssionel !
amoniaque Messages postés 20 Date d'inscription vendredi 23 novembre 2007 Statut Membre Dernière intervention 7 avril 2009
6 mars 2009 à 11:05
Bonjour à vous,

Je n'ai pas lu tous les commentaires donc peut être que l'idée à déjà été posée mais National Instruments "offre" des controls du genre (et bien d'autres!) dans leur suite Measurement Studio (dans mon cas j'utilise la version 8.1 pour VS2005 sous vb.Net).

Personnellement je les utilise pour le boulot et ils fonctionnent super bien !

Voyez par vous même ce à quoi ça peut ressemble :

http://zone.ni.com/devzone/cda/tut/p/id/4807

Cordialement,

J
Adn56 Messages postés 1172 Date d'inscription jeudi 24 mai 2007 Statut Membre Dernière intervention 28 septembre 2013 1
21 sept. 2007 à 16:35
ne soit pas dsl, grace à toi j'ai déja un datalogger qui tourne.
De plus je vais le refaire sous excel qui est tout de même plus apte à gerer des listes de valeurs ;)

Encore merci....
MadM@tt Messages postés 2167 Date d'inscription mardi 11 novembre 2003 Statut Membre Dernière intervention 16 juillet 2009 1
20 sept. 2007 à 14:18
Salut,
merci pour le commentaire, alors pour le quadrillage, ça devrait etre pas trop compliqué, si tu veux faire un quadrillage fixe. Dans ce cas la tu trace tes lignes verticales et horizontales à chaque fois que la courbe est dessinée. Si le quadrillage doit suivre le deplacement de la courbe c'est moins simple il te faudra décaler tes lignes verticales à chaque ajout d'une valeur au graphique.
Pour avoir 2 courbes c'est plus long que dur : ce controle n'est pas adapté pour faire ça, donc il faudrait revoir plein de choses pour faire ça. Sinon tu peux bricoler : tu duplique toutes les fonctions et le tableau des points de la courbe une deuxième fois (avec des noms différents) et donc à chaque fois que tu ajoute des valeurs il faut le faire pour les 2 courbes en faisant par exemple
Graphe.AddValue(ValeurCourbe1) -> ajoute au tableau des points de la courbe 1
Graphe.AddValue2(ValeurCourbe2) -> ajoute au tableau des points de la courbe 2
Pas rapidement fait quoi...
Pour l'epaisseur ça part contre je crois que c'est plus simple, il doit etre possible de parametrer la fonction que j'utilise pour tracer les traits pour changer l'epaisseur du trait.
Le problème c'est que j'ai rien le temps de faire en ce moment, donc je ne peux pas faire ça moi meme, ni aller regarder quelle fonction j'utilise pour tracer le trait et te dire quoi ajouter (je l'ai jamais fait en + donc je n'ai pas ça en tete). Je ne peux malheureusement que t'inviter à le faire toi meme.

Seulement si tu veux un vrai graphique pour 2 courbes avec quadrillage, la meilleure solution je pense serait soit de recréer un controle différent, soit de modifier en profondeur celui-ci.

Désolé de ne pas pouvoir t'aider plus, le temps me manque. Bon courage en tout cas et content d'avoir pu te fournir qqch d'utile.
A+
Adn56 Messages postés 1172 Date d'inscription jeudi 24 mai 2007 Statut Membre Dernière intervention 28 septembre 2013 1
19 sept. 2007 à 15:50
salut, tout dabord bravo l'artiste ^^ ocx simple et efficasse !
Donc grand merci à toi car je ne savais pas par quel bout prendre ce probléme (je cherche à faire un datalogger, et grace à toi il est fini ^^)
Juste une chose ou deux si tu as 5minutes :
Peut-on implémenter facilement un quadrillage ?
Dur d'avoir deux courbes ?
possibilité de changer l'eppaisseur de la courbe ?
bon j'arrette là sinon vais me faire tapper ^___^

Encore merci pour ce travail ! ++
MadM@tt Messages postés 2167 Date d'inscription mardi 11 novembre 2003 Statut Membre Dernière intervention 16 juillet 2009 1
29 juin 2007 à 19:45
Merci ;)
Pour l'historique c'est risqué, c'est un coup à si l'utilisateur ne fait attention qu'il accumule les données jusqu'à un craquage de la mémoire :$. Donc je préfère laisser cette gestion à ceux qui savent qu'ils font, et en plus ça m'arrange :p (faineant sans frontière ^^)
ritchy01 Messages postés 41 Date d'inscription mardi 16 septembre 2003 Statut Membre Dernière intervention 20 décembre 2009
29 juin 2007 à 18:42
Bonjour,
Tout simplement génial !
Simple et efficace, malgrés tout, il aurait été pratique que le nombre de saisies soit incrémentable afin de garder une bonne définition des valeurs instantanées tout en gardant l'historique.
Moi je donne un 10/10 :)
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
16 août 2006 à 19:15
bien joué
MadM@tt Messages postés 2167 Date d'inscription mardi 11 novembre 2003 Statut Membre Dernière intervention 16 juillet 2009 1
16 août 2006 à 18:23
Source mise à jour
- C'est bon ^^, toutes les propriétés sont sauvegardées, plus aucun problème de ce coté.
(j'ai enlevé le On Error Resume Next)

- Suppression de la picturebox et des labels, maintenant tout se fait par dessin dans l'usercontrol (donc gain léger en mémoire)

- Le graphe aime maintenant les valeurs négatives (j'ai refait les calculs pour le coup)

- Les légendes marchent nickel maintenant

Merci Renfield ;)
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
14 août 2006 à 21:25
les joies du
On Error Resume Next dans ReadProperties.

si tu le met en commentaire, ou que tu désactive la gestion d'erreur, tu aura une erreur :
"la valeur de deonnées Min est introuvable".
ajoutes simplement des valeurs par défaut.

"-Pourquoi c'est dommage que j'utilise une picturebox ? au pire ça fait perde un poil de mémoire, mais bon une picturebox c'est rien du tout"
oui et non, ca fait une fenêtre de plus, tu peux dessiner exactement de la même manière dans le Usercontrol, directement. Les labels 'legend' pourraient être supprimés. tu peux dessiner toi même les légendes, et éviter de charger décharger sans cesse tes labels (d'ailleurs, tu peux n'ajuster leur nombre que dans le Let NbValue)

tes legendes sont fausses : elles ne tiennent pas compte de lMin, qui peut être > 0

de plus, ton graph n'aime pas les valeurs négatives, semble-t'il.
MadM@tt Messages postés 2167 Date d'inscription mardi 11 novembre 2003 Statut Membre Dernière intervention 16 juillet 2009 1
14 août 2006 à 20:14
Source mise à jour.
Maintenant on peut choisir d'activer ou non le lissage des courbes.
Regardez la capture, j'ai fait une comparaison selon les 4 configuration d'apparence possibles.
Ma conclusion personnelle est la suivante :
Pour un moyen et grand graphique je conseille le lissage et l'antialias activés (il faut que j'améliore la rapidité de l'antialias encore)
Pour un petit graphique l'antialias et le lissage ne marchent plus trop (essayez de réduire la fenetre tout petit tout petit), alors je conseille d'activer seulement l'antialias (qui là mangera beaucoup moins de ressources car c'est petit), le lissage des courbes n'est plus visible de toute façon.

Renfield :
J'ai également rajouté les PropertyChanged, mais j'ai remarqué que pour Min et Max, les valeurs ne sont pas sauvegardées (meme avec PropertyChanged). J'ai essayé plein de trucs mais je ne comprend pas...
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
14 août 2006 à 09:37
dans tes property let/set, ajoutes simplement PropertyChanged "NbValue"
ca indiquera a VB quelles propriétés ont changé, et doivent être enregistrées.
(j'ai eu un soucis, une fois, avec une Font, qui n'était pas enregistrée).

joli, l'antialias.
MadM@tt Messages postés 2167 Date d'inscription mardi 11 novembre 2003 Statut Membre Dernière intervention 16 juillet 2009 1
12 août 2006 à 18:25
Ahhh ça y'est j'ai mis l'antialias, regardez la capture j'ai mis 2 fenetres pour comparer (possibilité de l'activer ou non).
Attention ça consomme des ressources, c'est pour ça que je suis sur l'optimisation des lignes antialias (cf http://www.vbfrance.com/code.aspx?ID=39079)
MadM@tt Messages postés 2167 Date d'inscription mardi 11 novembre 2003 Statut Membre Dernière intervention 16 juillet 2009 1
12 août 2006 à 18:09
Merci Renfield pour les suggestions. Alors
-Pour l'échelle logarithmique... chauuuud, faut être assez motivé la... Enfin si j'ai le temps j'y ferai car c'est vrai que ça a trop la classe ^^, tu peux voir super loin dans le temps.
-J'ai mis le Erase et reglé le problème de NbValues=0
-Merci pour les couleurs, je savais qu'on pouvait le faire mais pas comment
-Pourquoi c'est dommage que j'utilise une picturebox ? au pire ça fait perde un poil de mémoire, mais bon une picturebox c'est rien du tout ?
-Pour l'histoire du temps écoulé entre chaque ajout, je vois très bien ce que tu veux dire, mais la il faudrait que je modifie carrément tout mes tableaux et tout, alors que bon au final généralement on utilise un timer pour ajouter des valeurs en temps réel, donc sauf si l'intervalle est super petit, le temps reste sensiblement toujours le meme et ça ferait perdre bcp de temps de calcule et de mémoire pour si peu... Meme si c'est une bonne idée pour un controle se voulant etre + précis
-Euh je ne sais pas ce que c'est les PropertyChanged (evenement ? je l'ai pas trouvé)
-Pour la police du texte, c'est vrai, mais la position... ça fait + de boulot ^^ (crise de faineantise aujourd'hui lol)

Allé je me motive, je vais essayer d'intégrer ma dernière source sur l'antialiasing la dedans histoire de voir si c'est joli ^^

Merci
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
12 août 2006 à 15:05
Pas trop mal, mais j'ai quelques remarques, comme a mon habitude, lorsque je teste des Controles ^^

Une echelle logarithmique serait qq chose de sympatique, et permettrais d'avoir un peu plus "d'historique")

ReDim Values(0) As Long
=> Erase suffit

indice en dehors de la plage ou division par 0 lorsque l'on met NbValues a 0

mets tes propriétés de couleurs en OLE_COLOR, ca permettra d'avoir la palette

sinon, c'est pas trop mal... dommage que tu aies "besoin" d'un pictureBox,

dommage aussi que les points ajoutés ne tiennent pas compte de l'intervalle de temps passé depuis le dernier ajout (pas très clair, ce que je viens de dire là ^^)

il manque tous les PropertyChanged dans tes propriétés.
C'est important : et evitera que tu aies besoin de mettre "On Error Resume Next" dans ReadProperty.
J'ai mis mon TextColor en Rouge, et ca n'est pas pris en compte, en effet, dans ReadProperty, on voit :
lblTitle.ForeColor = ....
tu devrais utiliser tes propriétés ( Me.TextColor = .... )

on ne peux spécifier la police du texte, ni sa position.

le changement d'unité n'est pros en compte qu'au prochaine Refresh
MadM@tt Messages postés 2167 Date d'inscription mardi 11 novembre 2003 Statut Membre Dernière intervention 16 juillet 2009 1
12 août 2006 à 01:34
Merci à toi Jack, j'ai mis tes suggestions en oeuvre.
Maintenant la courbe est lissée, on peut afficher l'échelle, l'échelle s'adapte automatiquement au redimensionnement (ainsi que le nombre d'indicateur d'échelle affichés)
Pour les "indicateurs d'échelles", ils sont arrondis pour garder 3 chiffres significatifs et on peut leurs ajouter un suffixe (ici c'est % mais on peut mettre ms, A, ce que l'on veut)

Voilà, maintenant les calculs ne sont plus du tout aussi simple donc désolé les débutants mais ça sera plus difficile à comprendre. Voir la source de RDX si vous voulez bien voir le lissage des courbes.

Allé sur ce bonne nuit lol ;-)
et encore merci jack

Si quelqu'un trouve un bug ?? je suis interessé :)
MadM@tt Messages postés 2167 Date d'inscription mardi 11 novembre 2003 Statut Membre Dernière intervention 16 juillet 2009 1
11 août 2006 à 23:04
Oui, et pourtant j'étais persuadé que vbfrance en était plein à craquer donc je ne pensais pas poster cette source.
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
11 août 2006 à 23:03
Salut
Bien vu. Il ne se passe pas une semaine sans que qqun demande après ce genre de controle.
MadM@tt Messages postés 2167 Date d'inscription mardi 11 novembre 2003 Statut Membre Dernière intervention 16 juillet 2009 1
11 août 2006 à 20:09
Bien sur dans la capture ça fait pas très précis, mais on peut augmenter le nombre de valeur à afficher pour augmenter la précision, et de plus j'ai créé des points aléatoirement pour l'exemple, donc c'est pas super joli.
Rejoignez-nous