Quelqu'un maîtrise-t-il MSCHART en C++ ?
Existe-t-il une aide quelconque sur ce composant ?
Comment faire pour modifier l'épaisseur des courbes ?
Quelqu'un maîtrise-t-il MSCHART en C++ ?
Existe-t-il une aide quelconque sur ce composant ?
Comment faire pour modifier l'épaisseur des courbes ?
Y vraiment personne qui touche un peu à MSCHART
Y'a dja eu des sujets la dessus.
T'as dja regardé (clique sur rechercher puis retre *MSCHART*) ?
Ouaipp, les seules exemples que j'ai trouvé sur le net sont celui de codeguru ( très bon exemple ), et des exemples de code en VB que je n'arrive pas à retranscrire en VC++. J'arrive à faire des trucs de base genre mettre la légende ou non, rajouter un titre ou non. Mais je n'arrive pas à faire des chose plus évoluées comme par exemple changer l'épaisseur des courbes et certaines fonctions membre de la classe CMSChart me sont encore très obsures. En fait la classe CMSChart fait appel à d'autre classes pour les opérations complexes mais je n'arrive pas à utiliser les fonctions de ces classes avec l'objet m_Chart que j'ai créer.
Ça m'étonnerais mais c'eat peut-être un problème d'include...
(genre : il faut inclure les classes bizarres utilisées par la classe CMSChart...)
Ben en fait je n'est aucun pb de compilation ( 0 erreurs, 0 warning ) donc je n'ai à priori pas oublier d'include, mais je vois pas vraiment quel lien il y a entre le composant m_chart et les autres.
Si ce que je dis peux te paraître floue tu peux essayer de faire un nouveau proj MFC ou tu ajoute le composant MSChart, il va alors te demander si tu ajouter une floppée de classes qui vont avec. Ces ces classes ci qui permettent, à mon avis de changer pas mal de choses aux graphes, mais je ne connaît pas le lien qu'elles ont avec la classe MSChart...
:graphe: J'crois que j'ai trouvé une combine ( grosse bidouille ) pour faire mon graphe comme je l'entends. Merci quand même pour ton aide Guejo![]()
Salut,
D'abord,tu traces une courbe
Pour les variables non comprises,regarde le code de codeguru,je m'en suis inspiré
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71 index[0] ->représente t(paramètre) index[1] = 0 ->représente l'axe des x index[1] = 1 ->représente l'axe des y ex: Pour tracer une courbe: //Permet de laisser une liberté sur les echelles CVcPlot plot = m_Charttlc.GetPlot(); plot.SetUniformAxis(FALSE); double max = sauv[nbtracevraiment-1].time; //Place le minimum et le maximum sur l'axe des x m_Xmin = 0; m_Xmax = max; UpdateData(TRUE); m_Max = float(m_Xmax); m_Min = float(m_Xmin); UpdateData(FALSE); VARIANT var; var.vt = VT_R8; CVcAxis axis = plot.GetAxis(0,var); CVcValueScale valuescale = axis.GetValueScale(); valuescale.SetMaximum(m_Xmax); valuescale.SetMinimum(m_Xmin); int a; //Commence le remplissage du tableau DWORD numElement[] = {nbtracevraiment,2}; saRet.Create(VT_R8,2,numElement); for (index[0]=0;index[0]<nbtracevraiment;index[0]++) { a = index[0]; double j =sauv[a].time; index[1] = 0; //Pour les x saRet.PutElement(index,&j); index[1] = 1; //Pour les y double k =sauv[a].tlc; saRet.PutElement(index,&k); } UpdateData(TRUE); m_Charttlc.SetColumnLabel("TLC"); UpdateData(FALSE); m_Charttlc.SetChartData(saRet.Detach()); m_Charttlc.Refresh();
En esperant que t'a compris
koko22
Merci, ton exemple va m'être très utile .![]()
Si j'ai bien tout compris tu fais un graphe en fonction du temps. Ta variable max je vois pas trop à quoi elle correspond ( au max de quoi ) et surtout time c'est quoi comme variable ? Je dois ausi faire un graphe en fonction du temps et ça m'interesserai de savoir comment tu t'en est sorti pour le faire ; tu traces un points toutes les n secondes ? Et est ce qu'il existe un moyen de garder la distance entre deux points successifs constante. En effet comme tu as surement du t'en apercevoir, plus le nombre de points augmente plus la distance entre les points se resserent... Merci d'avance![]()
La valeur max correspond à la valeur maximale tracée.
J'ai une structure TLC composé de 2 champs:
* float time(variable x)
* float tlc(variable y)
Pour ce qui est du tempo des points, je sais pas j'ai pas eu le probléme, j'ai des points toutes les 200ms
Bonjour, je pense que cette portion de code qui t'as géné:
Le 1er paramètre de GetAxis correspond à
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 CVcAxis axis = plot.GetAxis(0,var); CVcValueScale valuescale = axis.GetValueScale(); valuescale.SetMaximum(m_Xmax); valuescale.SetMinimum(m_Xmin);
axe des x ->0
axe des y ->1
Donc comme j'ai mis 0,le max et le min sont pour l'axe des x
En effet c'est cette portion de code qui m'as dérangé. En fait si je change la valeur du max et du min, ça n'influe pas sur le graphe.
Deuxième question :
Pourquoi il m'affiche deux courbes : y en a une qui est bonne y = x+5 mais y en a une deuxième y = x ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 for (index[0]=0;index[0]<nb_points;index[0]++) { a = index[0]; index[1] = 0; //Pour les x double j = index[0];//sauv[a].time; saRet.PutElement(index,&j); index[1] = 1; //Pour les y double k = index[0]+5; saRet.PutElement(index,&k); }
Troisième question ( je sais j'abuse ) :
En ce qui concerne le temps : tu as une tempo de 200 ms. J'imagine que tu redessinnes alors ton graphe pour actualiser les données. Mais au bout d'une demi-heure ton graphe va ressembler à un gros paté de couleur parce que la taille du graphe est fixe et le nombre de points sur ton graphe augmente. Il n'y a pas de méthodes dans MSChart qui te redimmensionne la taille du graphe en fonction du nombre de points ?
PS : merci pour toute l'aide que tu m'as déjà fournij'ai déjà bien avancé
![]()
Bonjour,
il me semble que la réponse à ta 3eme question est
(L'axe est rediménsionné en Y selon le nombre de pts que t'a)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 CVcPlot plot = m_Charttlc.GetPlot(); plot.SetUniformAxis(FALSE);
Pour ce qui est de l'affichage de 2 courbes,c'est pas normal.Moi il ne me le fait pas.
Pour la 1er question, si tu veux changer XMin et Xmax met GetAxis(0,var),si tu veux changer YMin et YMax GetAxis(1,var)
Voila en esperant t'avoir aidé
koko22
Merci pour tout koko22, j'crois que je vais réussir à m'en sortir grâce à ton aide.
![]()
![]()
Y a juste une question qui me turlupine : comment tu sais ce que fais chaque fonction des composants MSChart : t'as une aide ou tu le fait en essayant ?
Bonjour,
j'ai essayé et je suis arrivé à comprendre une partie de cette ocx.Par contre,je n'arrive pas à imprimer le graphique
koko22
En Visual Basic c'est :
En VC++, le code doit probablement être totalement différent, mais je pense que le principe est le même : on ne peu pas imprimer directement le graphe, il faut passer par un intermédiaire ( le clipboard par ex ).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 MSChart1.EditCopy Printer.PaintPicture ClipBoard.GetData(), 0, 0 Printer.EndDoc
Sinon est ce que tu arrive à l'enregistrer sous forme d'image ? Ca m'interesserai de savoir si on peut le faire. En fait j'suis pas encore sur d'utiliser cette ocx. D'un côté elle est pas mal faite parce que l'on obtient rapidement un graphique, mais d'un autre côté si on ne peut ni le sauvegardé sous forme d'image, ni l'imprimer il ne présente aucun intérêt pour moi.
Bonjour,
je sais pas ce que tu utilises comme document mais j'utilise un doc/View SDI programme. Donc j'arrive à avoir l'appercu avant impression de mon graphe mais dés que je l'imprime PAGE BLANCHE.Malgré l'aide d'un personne sur le forum qui était super, je n'y suis pas parvenu...
En vérité,j'ai l'image de ce qu'il y'a sur la vue.
koko22
Ben en fait j'utilise aussi un SDI Cview mais j'ai même pas l'apercu. T'as fait un truc spécial pour l'avoir dans l'apercu ?![]()
Partager