2010-10-17 4 views
1

J'ai réussi à utiliser le projet d'exemple C++ pour dessiner des graphiques à partir de mon projet C++ en utilisant ZedGraph. Cependant, il n'y a pas d'exemple avec l'axe des dates pour C++. Le code suivant est tiré de l'exemple C# trouvé à http://zedgraph.org/wiki/index.php?title=Tutorial:Date_Axis_Chart_Demo. S'il vous plaît voir mes commentaires avec le texte // JEM // pour voir où mon problème estComment puis-je dessiner un graphique avec un axe de date en utilisant C++ et ZedGraph?

PointPairList list = new PointPairList(); 
    for (int i=0; i<36; i++) 
    { 
     double x = (double) new XDate(1995, 5, i+11); 

     > //JEM //This line above doesn't work in 
     > C++. 

     double y = Math.Sin((double) i * Math.PI/15.0); 
     list.Add(x, y); 
    } 

    ....missing code... 

    // Set the XAxis to date type 
    myPane.XAxis.Type = AxisType.Date; 

    //JEM //This one also doesn't work even if I change it to the 
    //syntax that C++ understands, that is, 
    myPane->XAxis->Type = AxisType->Date; 
+0

Alors vous avez pris un tas de code C#, a essayé de simplement changer les symboles autour et le faire fonctionner? Il n'y a aucun moyen que cela se produise. Vous devez obtenir un vrai exemple C++ et l'utiliser. – Puppy

+0

Il semble que ZedGraph ne soit utilisable qu'à ce stade du code managé, donc je l'ai ré-étiqueté en tant que tel. –

Répondre

0

Merci Gacek. C'est comme ça que ça s'est finalement arrêté. Votre réponse a été le tournant !!!

for (int i = 0; i < basin.DY; i++){ 
      XDate dato(1995,9,i,0,0,0); //date 
      double x = (double)dato; 
      //double x = i;  
      double y = basin.Qsim[i];  
      double y2 = basin.Qobs[i];  
      list->Add(x, y);  
      list2->Add(x, y2); 
    } 
    //set the XAXis to date type 
    myPane->XAxis->Type = AxisType::Date; 

est le constructeur ici pour le type Xdate pour C++ à partir de la documentation dot net sourceforge/html/M_ZedGraph_XDate__ctor_3.htm. XDate (année int, mois int, jour, int heure, int minute, double seconde)

J'ai aussi trouvé un exemple détaillé sur ce lien http://www.c-plusplus.de/forum/viewtopic-var-t-is-186422-and-view-is-next.html avec le code suivant

 /// ZedGraph Kurve ////////// 
private: void CreateGraph(ZedGraphControl ^zgc) 
{ 
    GraphPane ^myPane = zgc->GraphPane; 

    // Set the titles and axis labels 
    myPane->Title->Text = "Gewichtskurve"; 
    myPane->XAxis->Title->Text = "Tag"; 
    myPane->YAxis->Title->Text = "Gewicht in Kg"; 


    // Make up some data points from the Sine function 
    double x,y; 
    PointPairList ^list = gcnew PointPairList(); 
    for (int i=0; i<36; i++) 
    { 
    x = (double) gcnew XDate(1995, 5, i+11); 
     y = Math::Sin((double) i * Math::PI/15.0); 
     list->Add(x, y); 
    } 

    // Generate a blue curve with circle symbols, and "My Curve 2" in the legend 
     LineItem ^myCurve = myPane->AddCurve("Trainingskurve", list, Color::Blue, 
     SymbolType::Circle); 

     XDate ^xdatum = gcnew XDate (1995, 1, 1); 
     xdatum->AddDays (1); 

     myPane->XAxis->Type = AxisType::Date; 
+0

Super, content d'avoir aidé un peu. Vous devriez accepter la mienne ou la vôtre pour marquer cette question comme résolue. – Gacek

0

Peut-être que C++ a des problèmes avec les variables anonymes? Commencez par créer un objet XDate avant de le convertir en double.

XDate date = new XDate(1995, 5, i+11); 
double x = (double)date; 
Questions connexes