Abcisses et ordonnées dans une fenêtre

VeillardVeillard Membre
18:59 modifié dans API AppKit #1
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

Réponses

  • BruBru Membre
    novembre 2004 modifié #2
    Un seule réponse : NSBezierPath !

    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.

    .
  • VeillardVeillard Membre
    18:59 modifié #3
    Merci beaucoup  :)
  • VeillardVeillard Membre
    18:59 modifié #4
    Voici un premier aperçu...

    [Fichier joint supprimé par l'administrateur]
  • MalaMala Membre, Modérateur
    novembre 2004 modifié #5
    Hello,

    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)...
    graph.jpg

    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.
  • VeillardVeillard Membre
    18:59 modifié #6
    Excellent !!!  Rien à  voir avec mon petit bricolage  :'( , c'est d'un autre niveau.
    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.
  • MalaMala Membre, Modérateur
    18:59 modifié #7
    Bon alors ça roule je te prépare ça.

    Pour ma part, je n'ai jamais créé de frameworks. D'ailleurs je ne sais pas comment ça marche .

    Pas de problème, je vais faire un petit tutoriel d'utilisation. Tu verras c'est pas compliqué à  implémenter dans une appli.

    Vu l'aperçu que j'en ai eu, ça doit être très pratique.

    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.
  • muqaddarmuqaddar Administrateur
    18:59 modifié #8
    Et on propose le tutoriel au site ? ;)
  • MalaMala Membre, Modérateur
    18:59 modifié #9
    Et on propose le tutoriel au site ?

    :why?: CHEF, OUI CHEF !!! ;D ;D ;D

    :sors: ...et je te contacte hors forum pour connaitre la marche à  suivre.
  • VeillardVeillard Membre
    18:59 modifié #10
    J'ai enfin amélioré mon graphique  :trinque:
    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]
  • MalaMala Membre, Modérateur
    18:59 modifié #11
    Nickel!

    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.
  • VeillardVeillard Membre
    18:59 modifié #12
    OK j'ai hâte de le voir  :brule:
Connectez-vous ou Inscrivez-vous pour répondre.