Abcisses et ordonnées dans une fenêtre
![Veillard](https://cocoacafe.fr/uploads/userpics/051/nC89Q4R0M7C5F.png)
Bonjour,
Je suis à la recherche de doc permettant de tracer une courbe à partir d'une liste de valeurs X,Y le tout dans une fenêtre. Bref, je voudrais faire un graphique ;D
Merci à tous
Je suis à la recherche de doc permettant de tracer une courbe à partir d'une liste de valeurs X,Y le tout dans une fenêtre. Bref, je voudrais faire un graphique ;D
Merci à tous
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
Il suffit de créer un object NSBezierPath, et ensuite, pour chaque point, tu utilises la méthode lineToPoint: (sauf pour le premier qui sera utilisé pour positionner le départ de la courbe avec un moveToPoint:).
Quand tous les points sont enregistrés, il suffit de tracer la courbe par un stroke.
Bien sûr, le tout se dessine dans une sous classe de NSView dont tu personnalises la méthode displayRect:.
-> doc de NSBezierPath.
.
[Fichier joint supprimé par l'administrateur]
j'arrive encore après le début de la bataille (pour pas changer ;D ) mais si ça peut aider je me suis fait un framework qui permet de gérer l'affichage de courbes assez simplement pour mes applis d'astro.
Le résultat ressemble à ça (j'ai simulé très sommairement quelques points montrant la progression de 2 plongeurs pour te donner une idée de ce que ça peu donner)...
La classe herite d'une NSView. Voici à quoi ressemble le code de l'application utilisatrice du framework pour créer les graphs ci-dessus...
  // Creation d'un graphique de test
  // On donne un nom au graphique et on demande qu'il soit affiché
  [OutletGraphique definirTitreGraphique:@Graphique de test];
  [OutletGraphique afficherTitreGraphique:YES];Â
  // On indique le texte de chaque axe et on demande qu'ils soient affiches
  [OutletGraphique definirTitreAxeX:@T(min)];
  [OutletGraphique definirTitreAxeY:@Profondeur(m)];
  [OutletGraphique afficherTitreAxeX:YES];
  [OutletGraphique afficherTitreAxeY:YES];
 Â
  // On force manuellement l'echelle en X et Y
  [OutletGraphique forcerEchelleEnXAvecPas:1];
  [OutletGraphique forcerEchelleEnYAvecPas:1];
 Â
  // On ne veut pas que l'axe Y (profondeur) soit flèché
  [OutletGraphique afficherFlecheEnY:NO];
 Â
  // On donne un nom à la courbe du premier plongeur et on définit la couleur ainsi
  // que la transparence du remplissage de la courbe
  [OutletGraphique creerCourbe:@Plongeur A avecCouleur:[NSColor blueColor] etRemplissage:0.1];
 Â
  // On ajoute des points à la courbe du premier plongeur
  [OutletGraphique ajouterPoint:0 :0   dansGraphique:@Plongeur A];
  [OutletGraphique ajouterPoint:1 :-2  dansGraphique:@Plongeur A];
  [OutletGraphique ajouterPoint:2 :-4  dansGraphique:@Plongeur A];
  [OutletGraphique ajouterPoint:4 :-10  dansGraphique:@Plongeur A];
  [OutletGraphique ajouterPoint:5 :-10.2 dansGraphique:@Plongeur A];
  [OutletGraphique ajouterPoint:6 :-8  dansGraphique:@Plongeur A];
  [OutletGraphique ajouterPoint:7 :-7  dansGraphique:@Plongeur A];
  [OutletGraphique ajouterPoint:8 :0   dansGraphique:@Plongeur A];
 Â
  // On donne un nom à la courbe du second plongeur et on définit la couleur ainsi
  // que la transparence du remplissage de la courbe
  [OutletGraphique creerCourbe:@Plongeur B avecCouleur:[NSColor redColor] etRemplissage:0.1];
 Â
  // On ajoute des points à la courbe du second plongeur
  [OutletGraphique ajouterPoint:0 :0    dansGraphique:@Plongeur B];
  [OutletGraphique ajouterPoint:1 :-1.6  dansGraphique:@Plongeur B];
  [OutletGraphique ajouterPoint:2 :-2    dansGraphique:@Plongeur B];
  [OutletGraphique ajouterPoint:4 :-6    dansGraphique:@Plongeur B];
  [OutletGraphique ajouterPoint:5 :-10  dansGraphique:@Plongeur B];
  [OutletGraphique ajouterPoint:6 :-10.5 dansGraphique:@Plongeur B];
  [OutletGraphique ajouterPoint:7 :-4    dansGraphique:@Plongeur B];
  [OutletGraphique ajouterPoint:8 :0    dansGraphique:@Plongeur B];
On peut ainsi paramétrer pas mal de choses ( axes, échelles, titres, multi-courbes, redimensionnement automatique, légende, etc..) sans trop se casser la tête :crackboom:-
Et en plus, pour une fois c'est en Français! ;D
Avis aux amateurs.
Pour ma part, je n'ai jamais créé de frameworks. D'ailleurs je ne sais pas comment ça marche :-\. Vu l'aperçu que j'en ai eu, ça doit être très pratique.
Pas de problème, je vais faire un petit tutoriel d'utilisation. Tu verras c'est pas compliqué à implémenter dans une appli.
En fait, tu en utilises déjà (AppKit.framework, foundation.framework, cocoa.framework) mais sans le savoir.
J'essaye de te faire le tutoriel avant le WE et on en reparle sur un exemple concret.
:why?: CHEF, OUI CHEF !!! ;D ;D ;D
:sors: ...et je te contacte hors forum pour connaitre la marche à suivre.
Je me suis inspiré d'un exemple traité dans de thread (Merci Mala) mais sans frameworks. :spot:
Voici le résultat... C'est quand-même mieux non ?
[Fichier joint supprimé par l'administrateur]
Comme quoi avec un peu d'huile de coude...
De mon côté, j'ai fait un ptit tut sur mon framework pour ceux qui seraient moins courageux. Je le fais suivre à oxitan de ce pas.