Satimage Précédent | Suivant
Superposition d'un dessin
Accueil Documentation SmileLab Scripting Personnalisation de l'interface utilisateur d'un graphique Superposition d'un dessin  
Présentation
La bibliothèque de dessin de Smile vous permet de dessiner en PDF dans une graphic window, ou dans une graphic views. Le menu contextuel Superposer un dessin des graphic view est une solution simple pour ajouter des commentaires ou une illustration par-dessus un graphique.
  • pour définir un dessin à superposer au graphique d'une graphic view, déroulez son menu contextuel (ctrl-clic sur l'objet) et sélectionnez Superposer un dessin.
  • la fenêtre de script de la graphic view s'ouvre alors, définissant une fonction on OverlayDrawing(v) contenant en commentaire un script d'exemple. Cette fonction peut contenir des appels à des commandes de dessin, sans faire appel à BeginFigure()...EndFigure().
  • le paramètre v de la fonction on OverlayDrawing(v) est une référence à la vue. Vous pouvez utiliser la commande convert coordinates pour convertir des coordonnées utilisateurs (par exemple les coordonnées de points d'une courbe de la vue) en coordonnées en pixels. Le script donné en exemple écrit un texte au centre de la vue : enlevez les commentaires (* et *) puis sauvez la fenêtre de script pour voir cet exemple se dessiner sur la vue.
Exemple
Voici un exemple plus sophistiqué, traitant les données d'une courbe pour numéroter ses sommets. Ce script fait appel à une fonction calculant ces sommets, puis utilise la commande convert coordinates pour dessiner un point et un nombre à chaque sommet.
  • Définissez une courbe :
    set y to randomarray 20 range {0, 100}
    set c to QuickCurve(0, y, "randomized values")

  • Puis choisissez Superposer un dessin dans le menu contextuel de la vue. Remplacez le script proposé par le suivant :
    on getmaxs(x, y)
        set n to (count y)
        set {xl, yl} to {extractarray x at 1 for (n - 2), extractarray y at 1 for (n - 2)}
        set {xc, yc} to {extractarray x at 2 for (n - 2), extractarray y at 2 for (n - 2)}
        set {xr, yr} to {extractarray x at 3 for (n - 2), extractarray y at 3 for (n - 2)}
        set m to evalformula "(yc > yl) & (yc > yr)" with {yl:yl, yc:yc, yr:yr}
        set {xx, yy} to maskarray {xc, yc} with m
        return {xx as list of real, yy as list of real}
    end getmaxs

    on OverlayDrawing(v)
        try
            set c to curve 1 of v
            set {xx, yy} to getmaxs(xdata of c, ydata of c)
            repeat with k from 1 to (count yy)
                set xi to (get item k of xx)
                set yi to (get item k of yy)
                set {i, j} to convert coordinates {xi, yi} in v
                SetPenColor({1, 0, 0, 0.9})
                SetPenWidth(3)
                MoveTo({i + 6, j})
                ArcPath({i, j}, 6, 0, 2 * pi, true)
                DrawPath(2)
                TextMoveTo({i, j})
                SetTextSize(15)
                DrawString("[br]" & k)
            end repeat
            TextMoveTo({200, 50})
            SetTextSize(12)
            SetFillColor({0, 0, 0, 1})
            DrawString("(" & (count yy) & " maximums)")
        on error strErr
            postit strErr
        end try
    end OverlayDrawing


    Importer le script

Un exemple de dessin superposé à une courbe.
English version
Copyright ©2008 Paris, Satimage