Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

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


Information sur la source

Catégorie :Graphique Classé sous : graphe, graphique, courbe, interpolation, antialias Niveau : Initié Date de création : 11/08/2006 Date de mise à jour : 12/04/2007 17:53:52 Vu / téléchargé: 14 272 / 2 833

Note :
7,75 / 10 - par 4 personnes
7,75 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

Commentaire sur cette source (27)
Ajouter un commentaire et/ou une note


Description

Cliquez pour voir la capture en taille normale
Bonjour à tous,

voilà je cherchais un controle qui me permettrait d'afficher un graphique en temps réel, c'est à dire qu'on ajoute les valeur à intervalle régulier et le graphique se décale pour insérer la nouvelle valeur. En gros c'est le genre de graphique qu'il y a dans le Ctrl Alt Suppr qui affiche l'utilisation CPU, ou alors ceux dans emule qui affichent la bande passante.

L'avantage ici, c'est que vous n'utilisez qu'une commande : AddValue pour ajouter une valeur au graphique.
L'usercontrol se charge tout seul de tracer le graphe, de décaler les valeurs, les sauvegarder etc...
Vous avez juste à lui spécifier au départ les limites min et max du graphique, ainsi que le nombre de valeurs qui apparaitrons dans le graphique.
A noter aussi qu'il s'adapte tout seul lorsqu'on le redimensionne.

On peut également le personnaliser (couleur de fond, de devant, titre du graphique, bordure etc...)


Nouveauté : maintenant la courbe est lissée grace à l'équation que RDX utilisait dans cette source : http://www.vbfrance.com/code.aspx?ID=25405
Merci à Jack ;-)
Equation utilisée (pour ceux interessés) :
Y=Yorigine - ( HauteurFinale / ( 1 + exp( 4.x.e - 2.e ) )

Il y a également un échelle (possibilité de ne pas l'afficher) qui s'adapte automatiquement au redimensionnement (en terme de position, echelle du graphe et nombre d'indicateur d'échelle)

Il y a également la possibilité d'appliquer un antialiasing sur la courbe (afin d'éviter le crènelage dut aux pixels). Il est possible de ne pas l'activer car cela consomme des ressources
 

Conclusion

En espérant que ça vous serve
MadMatt
 

Fichier Zip

Pour les "Membres Club", vous pouvez télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip

Historique

12 août 2006 01:30:18 :
Ajout du lissage de la courbe et de l'échelle J'ai également amélioré les calculs
12 août 2006 01:56:06 :
Ajout d'une fonction pour vider le graphique
12 août 2006 18:24:16 :
Ajout du filtre antialias
12 août 2006 18:32:55 :
Correction d'un bug : rafraichissement lors d'un resize
14 août 2006 20:10:57 :
Ajout de la possibilité d'activer ou non le lissage de la courbe et sauvegarde des propriétés.
16 août 2006 18:20:00 :
Le graphe supporte maintenant des valeurs négatives et prend moins de place en mémoire. La modification des propriétés est également mieux gérée
12 avril 2007 17:53:52 :
Ajout de la propriété DrawGraph permettant de désactiver le dessin de la courbe

Commentaires et avis

signaler à un administrateur
Commentaire de MadM@tt le 11/08/2006 20:09:14

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.

signaler à un administrateur
Commentaire de jack le 11/08/2006 23:03:12 administrateur CS

Salut
Bien vu. Il ne se passe pas une semaine sans que qqun demande après ce genre de controle.

signaler à un administrateur
Commentaire de MadM@tt le 11/08/2006 23:04:59

Oui, et pourtant j'étais persuadé que vbfrance en était plein à craquer donc je ne pensais pas poster cette source.

signaler à un administrateur
Commentaire de MadM@tt le 12/08/2006 01:34:22

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é :)

signaler à un administrateur
Commentaire de Renfield le 12/08/2006 15:05:55 administrateur CS

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

signaler à un administrateur
Commentaire de MadM@tt le 12/08/2006 18:09:42

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

signaler à un administrateur
Commentaire de MadM@tt le 12/08/2006 18:25:30

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)

signaler à un administrateur
Commentaire de Renfield le 14/08/2006 09:37:16 administrateur CS

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.

signaler à un administrateur
Commentaire de MadM@tt le 14/08/2006 20:14:56

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...

signaler à un administrateur
Commentaire de Renfield le 14/08/2006 21:25:16 administrateur CS

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.

signaler à un administrateur
Commentaire de MadM@tt le 16/08/2006 18:23:35

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 ;)

signaler à un administrateur
Commentaire de Renfield le 16/08/2006 19:15:01 administrateur CS

bien joué

signaler à un administrateur
Commentaire de ritchy01 le 29/06/2007 18:42:20

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 :)

signaler à un administrateur
Commentaire de MadM@tt le 29/06/2007 19:45:39

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 ^^)

signaler à un administrateur
Commentaire de Adn56 le 19/09/2007 15:50:29

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 ! ++

signaler à un administrateur
Commentaire de MadM@tt le 20/09/2007 14:18:09

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+

signaler à un administrateur
Commentaire de Adn56 le 21/09/2007 16:35:23

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....

signaler à un administrateur
Commentaire de amoniaque le 06/03/2009 11:05:46

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

signaler à un administrateur
Commentaire de Adn56 le 06/03/2009 12:37:48

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 !

signaler à un administrateur
Commentaire de amoniaque le 06/03/2009 15:41:39

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...

signaler à un administrateur
Commentaire de MadM@tt le 06/03/2009 15:46:12

De toute façon c'est pour VB.Net

signaler à un administrateur
Commentaire de Adn56 le 06/03/2009 17:16: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]

signaler à un administrateur
Commentaire de Adn56 le 06/03/2009 17:22:00 10/10

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
++

signaler à un administrateur
Commentaire de amoniaque le 06/03/2009 17:33:57

Et aussi VC# .net, VB6, et VC++6 ...

signaler à un administrateur
Commentaire de amoniaque le 06/03/2009 17:49:24

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.

++

signaler à un administrateur
Commentaire de MadM@tt le 06/03/2009 18:21:53

Je parlais de ma source > elle est faite pour VB6. A moins que je me trompe, la version de NI marche pour VB.net

signaler à un administrateur
Commentaire de Adn56 le 06/03/2009 19:00:46

@ 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 ;)

Ajouter un commentaire

Discussions en rapport avec ce code source dans le forum

transformer plage de données en graphe [ par Edgar ] Bonjour à tous,je voudrais savoir s'il est possible de transformer directement une plage de données d'une feuille Excel en un graphique. Il ne s'agit Graphique(courbe) à partir de 2 séries de données [ par niouk ] Je dispose de 2 séries de données dans un contrôle MSFlexGrid dans les colonnes 0 et 1. Comment faire pour afficher un graphique avec 2 courbes simult Graphique(courbe) à partir de 2 séries de données [ par niouk ] Je dispose de 2 séries de données dans un contrôle MSFlexGrid dans les colonnes 0 et 1. Comment faire pour afficher un graphique avec 2 courbes simult Je veux tracer un graphique (courbe) !!! [ par log2002 ] Bonjour,existe-il une fonction pour tracer des graphique sur vb !sinon merci de me diriger !merci à tous, Graphique comme Excel ! [ par pingooo ] Salut à tous !Nouveau petit problème: J'ai une MSHFlexGrid pleine de données.Jusque là, ça va ... maintenant, j'aimerais sélectionner les données avec graphe dyamique en reseaux [ par doublejef ] Je cherche à réaliser une interface pour une communication entre un serveur et un ordinateur.Une fois la connection établie si le serveur envoi des va GRAPHIQUE EXCEL [ par nagattaque ] Bonjour tout le monde,Voila j'aimerai savoir comment faire pour selectionner une courbe sur un graphe excel.Le principe que j'aimerai mettre en place Eliminer un point d'une courbe (MSCHART) [ par Baddack ] Attention ce message s'adresse à un dieu du VB.Je dois afficher une courbe avec un MsChart.Jusque là rien de méchant.Puis si l'utilisateur trouve un MSChart: representation graphique? [ par sly63 ] Hello Everybody, Everybody hello1/premier problème:J'ai une liste de 2500 points de coordonnées (x,y) que je souhaite représenter graphiquement en uti MSCHART ou autre : mon graphe est particulier ! [ par Hakimovsky ] POUVEZ-VOUS RÉSOUDRE MON PROBLÈME?C'est au sujet d'un résultat graphique (d'un tableau multidimensionnel écrit en code de VB 6). Ce graphique doit êtr


Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :

Comparez les prix Nouvelle version

Photothèque Nouveau !



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,406 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.