IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

MFC Discussion :

MSCHART


Sujet :

MFC

  1. #1
    Futur Membre du Club
    Inscrit en
    Juillet 2002
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Juillet 2002
    Messages : 15
    Points : 5
    Points
    5
    Par défaut MSCHART
    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 ?

  2. #2
    Futur Membre du Club
    Inscrit en
    Juillet 2002
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Juillet 2002
    Messages : 15
    Points : 5
    Points
    5
    Par défaut encore
    Y vraiment personne qui touche un peu à MSCHART

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    88
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 88
    Points : 72
    Points
    72
    Par défaut
    Y'a dja eu des sujets la dessus.
    T'as dja regardé (clique sur rechercher puis retre *MSCHART*) ?

  4. #4
    Futur Membre du Club
    Inscrit en
    Juillet 2002
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Juillet 2002
    Messages : 15
    Points : 5
    Points
    5
    Par défaut
    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.

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    88
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 88
    Points : 72
    Points
    72
    Par défaut
    Ç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...)

  6. #6
    Futur Membre du Club
    Inscrit en
    Juillet 2002
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Juillet 2002
    Messages : 15
    Points : 5
    Points
    5
    Par défaut
    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...

  7. #7
    Futur Membre du Club
    Inscrit en
    Juillet 2002
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Juillet 2002
    Messages : 15
    Points : 5
    Points
    5
    Par défaut Merci
    :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

  8. #8
    Membre actif
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    84
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 84
    Points : 232
    Points
    232
    Par défaut MSChart
    Salut,

    D'abord,tu traces une courbe
    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();
    Pour les variables non comprises,regarde le code de codeguru,je m'en suis inspiré
    En esperant que t'a compris

    koko22

  9. #9
    Membre actif
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    84
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 84
    Points : 232
    Points
    232
    Par défaut Précision
    Pour précision,je trace TLC=f(time)

  10. #10
    Futur Membre du Club
    Inscrit en
    Juillet 2002
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Juillet 2002
    Messages : 15
    Points : 5
    Points
    5
    Par défaut
    Merci, ton exemple va m'être très utile .

  11. #11
    Futur Membre du Club
    Inscrit en
    Juillet 2002
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Juillet 2002
    Messages : 15
    Points : 5
    Points
    5
    Par défaut Message pour koko22
    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

  12. #12
    Membre actif
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    84
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 84
    Points : 232
    Points
    232
    Par défaut
    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

  13. #13
    Membre actif
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    84
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 84
    Points : 232
    Points
    232
    Par défaut Autre expli
    Bonjour, je pense que cette portion de code qui t'as géné:

    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);
    Le 1er paramètre de GetAxis correspond à
    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

  14. #14
    Futur Membre du Club
    Inscrit en
    Juillet 2002
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Juillet 2002
    Messages : 15
    Points : 5
    Points
    5
    Par défaut Tu as raison
    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 :

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

    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à fourni j'ai déjà bien avancé

  15. #15
    Membre actif
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    84
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 84
    Points : 232
    Points
    232
    Par défaut ok
    Bonjour,

    il me semble que la réponse à ta 3eme question est
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
       CVcPlot plot = m_Charttlc.GetPlot(); 
       plot.SetUniformAxis(FALSE);
    (L'axe est rediménsionné en Y selon le nombre de pts que t'a)

    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

  16. #16
    Futur Membre du Club
    Inscrit en
    Juillet 2002
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Juillet 2002
    Messages : 15
    Points : 5
    Points
    5
    Par défaut
    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 ?

  17. #17
    Membre actif
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    84
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 84
    Points : 232
    Points
    232
    Par défaut salut
    Bonjour,

    j'ai essayé et je suis arrivé à comprendre une partie de cette ocx.Par contre,je n'arrive pas à imprimer le graphique

    koko22

  18. #18
    Futur Membre du Club
    Inscrit en
    Juillet 2002
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Juillet 2002
    Messages : 15
    Points : 5
    Points
    5
    Par défaut
    En Visual Basic c'est :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    MSChart1.EditCopy
    Printer.PaintPicture ClipBoard.GetData(), 0, 0
    Printer.EndDoc
    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 ).

    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.

  19. #19
    Membre actif
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    84
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 84
    Points : 232
    Points
    232
    Par défaut
    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

  20. #20
    Futur Membre du Club
    Inscrit en
    Juillet 2002
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Juillet 2002
    Messages : 15
    Points : 5
    Points
    5
    Par défaut
    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 ?

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. [VB6] Combiner 2 styles avec MSChart
    Par khany dans le forum VB 6 et antérieur
    Réponses: 8
    Dernier message: 29/04/2003, 09h30
  2. [] [Excel] Exporter un graphe MSChart vers Excel
    Par Gonzo dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 18/12/2002, 17h49
  3. [VBA-W] [Word] Insérer une image MSChart
    Par fredo1664 dans le forum VBA Word
    Réponses: 2
    Dernier message: 20/11/2002, 09h09
  4. [VB6] [MSChart] Utilisation de TwipsToChartPart
    Par fea dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 14/10/2002, 17h57
  5. [VB6] [MSChart] Courbe incorrecte
    Par elifqaoui dans le forum VB 6 et antérieur
    Réponses: 18
    Dernier message: 08/10/2002, 21h53

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo