Débutant ZedGraph [Résolu]

damsdu64 49 Messages postés lundi 4 décembre 2000Date d'inscription 29 avril 2009 Dernière intervention - 30 janv. 2009 à 15:49 - Dernière réponse : damsdu64 49 Messages postés lundi 4 décembre 2000Date d'inscription 29 avril 2009 Dernière intervention
- 6 févr. 2009 à 09:19
Bonjour tout le monde,

A partir de la librairie ZedGrah je voudrais créer trois courbes dans un même graphique.

Les coordonnées de ces courbes seront stockées dans un fichier en binaire avec l'ordonnée de la courbe 1 , ordonnée de la courbe 2 puis ordonnée de la courbe 3.

Chaque ordonnée est représenter sur 2 octets et cela dans tout le fichier.

Ma question est : comment je peut faire pour faire en sorte que ZedGraph par le moyen de ces coordonnées créer mes courbes.

Je sais comment faire pour créer manuellement des point pour une courbe mais mon problème ce situe au niveau de lecture binaire du fichier et de l'exploitation des données.

En vous remerciant par avance,
Afficher la suite 

Votre réponse

11 réponses

Meilleure réponse
damsdu64 49 Messages postés lundi 4 décembre 2000Date d'inscription 29 avril 2009 Dernière intervention - 3 févr. 2009 à 17:38
3
Merci
Comme code pour arriver a quelque chose de provisoire j'ai fait ca :

int FinFichier = 0;

            while (FinFichier != -1 )
            {
               

                short i1 = br.ReadInt16();
                short i2 = br.ReadInt16();
                short i3 = br.ReadInt16();
               
                list1.Add((double)x, (double)i1);
                list2.Add((double)x, (double)i2);  
                list3.Add((double)x, (double)i3);
                try
                {

                    FinFichier = br.PeekChar();
                }
                catch (Exception excep) { }
                x++;
            }

J'ai utiliser le try catch car la méthode peekchar provoque des exceptions mais je n'arrive pas vraiment à m'en servir.

Est ce qu'il n'y aurait pas un autre moyen, une autre méthode que par le moyen de la méthode peekchar?

Merci

Merci damsdu64 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 104 internautes ce mois-ci

Commenter la réponse de damsdu64
bubbathemaster 342 Messages postés dimanche 26 janvier 2003Date d'inscription 25 mars 2009 Dernière intervention - 30 janv. 2009 à 17:21
0
Merci
C'est donc pas un probleme de Zedgraph non?

Si chaque point fait 2 octets, tu peux lire ca comme ca:
BinaryReader binReader = new BinaryReader(File.Open(@"C:\tonfichier.bin", FileMode.Open));
byte[] testArray = new byte[2];
binReader.Read(testArray, 0, 2);

int valeur = (int)(testArray[0] << 8 + testArray[1]);
Commenter la réponse de bubbathemaster
cs_Bidou 5507 Messages postés dimanche 4 août 2002Date d'inscription 20 juin 2013 Dernière intervention - 30 janv. 2009 à 17:31
0
Merci
Voui...
M'enfin BinaryReader possède les méthodes nécessaires pour directement lire les int, les doubles, etc...

<hr />
-Blog-
-Site Perso-
Commenter la réponse de cs_Bidou
damsdu64 49 Messages postés lundi 4 décembre 2000Date d'inscription 29 avril 2009 Dernière intervention - 30 janv. 2009 à 23:22
0
Merci
Merci pour vos réponses.
Malheureusement mon niveau de programmation n'est pas très élevé c'est pourquoi j'aimerais avoir quelques explications au sujet de ce bout de code correspondant à créer mes courbes :

Ca c'est le code que je met pour créer manuellement mes deux courbes  (c'est à dire en rentrant les formules des deux sinusoides à la main) :

PointPairList list = new PointPairList();
            PointPairList list2 = new PointPairList();
            for ( int i = 0; i < 36; i++ )
            {
                double x = (double)i * 5.0;
                double y = Math.Sin( (double)i * Math.PI / 15.0 ) * 16.0;
                double y2 = y * 13.5;
                list.Add( x, y );
                list2.Add( x, y2 );
            }
//Création de la première courbe
LineItem myCurve = myPane.AddCurve( "Alpha",list, Color.Purple, SymbolType.Diamond );

//Création de la deuxieme courbe
myCurve = myPane.AddCurve( "Beta", list2 , Color.Blue, SymbolType.Circle );

Maintenant comme je l'ai dit auparavant je veut créer trois courbes à partir du fichier existant qui contient les ordonnées par paire de deux octets.

Alors comme vous m'avez dit je doit utiliser :
 BinaryReader br = new BinaryReader(File.Open("MonBeauTexte.txt", FileMode.Open));

Mais cette partie de code je n'arrive pas à saisir :
 byte[] testArray = new byte[2];
 br.Read(testArray, 0, 2);
 int valeur = (int)(testArray[0] << 8 + testArray[1]);

Comment je peut l'appliquer à mon cas présent ? 

Je doit passer en paramètre de la fonction mypane.addcurve des points en l'occurence cété list et list2 mais comment je peut faire dans mon cas présent, pour mettre dans list, list2 puis list3( si il me faut un troisieme graph), la paire d'octets qu'il faille bien c'est à dire
par exemple les deux premiers octets dans list puis les deux autres dans list2 puis dans list3 et ainsi dessuite...

Je suis désolé pour toute ces questions mais sa serait vraiment génial si vous m'éclairiez un petit peut.

Je vous remercie par avance
Commenter la réponse de damsdu64
bubbathemaster 342 Messages postés dimanche 26 janvier 2003Date d'inscription 25 mars 2009 Dernière intervention - 31 janv. 2009 à 15:59
0
Merci
Je savais pas Bidou j'ai jamais travaillé avec des BinaryReaders, j'ai juste pris la doc, l'exemple et zou ;o
Donc si tu peux lire directement des shorts (2 octets), effectivement ce sera plus propre.

Par contre si tu n'arrive meme pas à comprendre comment fonctionne l'exemple de base de ZedGraph, je crois pas qu'on va pv taider beaucoup... Dsl j'aurais bien ecris le ptit bout de code, mais j'ai pas Visual Studio sous la main là.
Commenter la réponse de bubbathemaster
damsdu64 49 Messages postés lundi 4 décembre 2000Date d'inscription 29 avril 2009 Dernière intervention - 31 janv. 2009 à 16:42
0
Merci
Bon tampis c'est gentil quand même, si quelq'un d'autre pourrait m'aider sa serait gentil.. enfin si c'est possible.. Merci beaucoup en tout cas
Commenter la réponse de damsdu64
cs_Bidou 5507 Messages postés dimanche 4 août 2002Date d'inscription 20 juin 2013 Dernière intervention - 2 févr. 2009 à 13:39
0
Merci
bubbathemaster> De tête je dirais que ces méthodes existent oui... c'est quand même plus pratique que de manipuler un tableau et de faire des décalage...

<hr />
-Blog-
-Site Perso-
Commenter la réponse de cs_Bidou
damsdu64 49 Messages postés lundi 4 décembre 2000Date d'inscription 29 avril 2009 Dernière intervention - 2 févr. 2009 à 15:09
0
Merci
Je n'ai pas vraiment l'habitude du C# je vous explique ma méthode :
J'ouvre et je lit mon fichier texte avec binaryreader :
BinaryReader br = new BinaryReader(File.Open("MonBeauTexte.txt", FileMode.Open));

Je récupere dans une variable les deux premiers octets du fichier :
Int16 x = br.ReadInt16();

Je converti x en double :
double x1 = Convert.ToDouble(x);

Pour me servir de la méthode :
PointPairList list = new PointPairList();
list.Add(x1, y1);

Et ensuite pouvoir afficher ma courbe ou comme paramètre il y aura list :
LineItem myCurve = myPane.AddCurve( "Alpha",list, Color.Purple, SymbolType.Diamond );

Je veux récuperer les information de mon fichier qui seront disposées ainsi :
XXYYZZXXYYZZ
XX désignant les valeurs de la premiere courbe sur deux octets et ainsi de suite
YY deuxieme courbe
ZZ troisieme courbe
 et ensuite recommencer dans une boucle

Je veut savoir comment je peut me déplacer dans mon fichier c'est à  dire récupérer mes informations à tab[0], tab[2] puis a tab[4] pour créer mes points.

Merci pour vos réponses
Commenter la réponse de damsdu64
bubbathemaster 342 Messages postés dimanche 26 janvier 2003Date d'inscription 25 mars 2009 Dernière intervention - 2 févr. 2009 à 16:07
0
Merci
Si tu n'as pas d'information sur les absisses, il faut que tu les crées toi même. Bon c'est pas sur que ca compile car comme j'ai dit j'ai pas accès à Visual Studio, mais ca doit pas etre tres loin:

BinaryReader br = new BinaryReader(File.Open("MonBeauTexte.txt", FileMode.Open));

PointPairList list1 = new PointPairList();
PointPairList list2 = new PointPairList();
PointPairList list3 = new PointPairList();
int x = 0;

while(br.PeekChar() >= 0)
{
  short i1 = br.ReadInt16();
  short i2 = br.ReadInt16();
  short i3 = br.ReadInt16();

  list1.Add( (double)x, (double)i1);
  list2.Add( (double)x, (double)i2);
  list3.Add( (double)x, (double)i3);
   x++;
}

myPane.AddCurve( "A",list1, Color.Purple, SymbolType.Diamond );
myPane.AddCurve( "B",list2, Color.Purple, SymbolType.Diamond );
myPane.AddCurve( "C",list3, Color.Purple, SymbolType.Diamond );
Commenter la réponse de bubbathemaster
damsdu64 49 Messages postés lundi 4 décembre 2000Date d'inscription 29 avril 2009 Dernière intervention - 2 févr. 2009 à 16:44
0
Merci
Merci pour ton aide je vais essayer de tester tout ça en l'adaptant.
Commenter la réponse de damsdu64
damsdu64 49 Messages postés lundi 4 décembre 2000Date d'inscription 29 avril 2009 Dernière intervention - 6 févr. 2009 à 09:19
0
Merci
C'est bon j'ai reussi à adapter ce que tu m'a donner.

Je te remercie cela m'a beaucoup aider :)
Commenter la réponse de damsdu64

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.