damsdu64
Messages postés49Date d'inscriptionlundi 4 décembre 2000StatutMembreDernière intervention29 avril 2009
-
30 janv. 2009 à 15:49
damsdu64
Messages postés49Date d'inscriptionlundi 4 décembre 2000StatutMembreDernière intervention29 avril 2009
-
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.
bubbathemaster
Messages postés339Date d'inscriptiondimanche 26 janvier 2003StatutMembreDernière intervention25 mars 20094 30 janv. 2009 à 17:21
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]);
damsdu64
Messages postés49Date d'inscriptionlundi 4 décembre 2000StatutMembreDernière intervention29 avril 2009 30 janv. 2009 à 23:22
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
Vous n’avez pas trouvé la réponse que vous recherchez ?
bubbathemaster
Messages postés339Date d'inscriptiondimanche 26 janvier 2003StatutMembreDernière intervention25 mars 20094 31 janv. 2009 à 15:59
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à.
cs_Bidou
Messages postés5487Date d'inscriptiondimanche 4 août 2002StatutMembreDernière intervention20 juin 201360 2 févr. 2009 à 13:39
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...
damsdu64
Messages postés49Date d'inscriptionlundi 4 décembre 2000StatutMembreDernière intervention29 avril 2009 2 févr. 2009 à 15:09
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.
bubbathemaster
Messages postés339Date d'inscriptiondimanche 26 janvier 2003StatutMembreDernière intervention25 mars 20094 2 févr. 2009 à 16:07
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();