canvas

 

canvas - Créer et manipuler des widgets canvas


SYNTAXE

 canvas nom_du_canvas ?options?

OPTIONS STANDARDS


-background

-borderwidth

-cursor

-highlightbackground

-highlightcolor

-highlightthickness

-insertbackground

-insertborderwidth

-insertofftime

-insertontime

-insertwidth

-relief

-selectbackground

-selectborderwidth

-selectforeground

-state

-takefocus

-xscrollcommand

-yscrollcommand


OPTIONS SPÉCIFIQUES AU WIDGET


Ligne de commande Nom : -closeenough

Base de données Nom : closeEnough

Base de données Classe : CloseEnough

Spécifie un nombre décimal indiquant à quelle distance d'un objet, doit se trouver le pointeur de la souris, pour être considéré à l'intérieur de l'objet. La valeur par défaut est 1.0.

Ligne de commande Nom : -confine

Base de données Nom : confine

Base de données Classe : Confine

Spécifie une valeur booléenne indiquant s'il est autorisé ou non, de fixer la vue du canvas en dehors de la région définie par l'argument scrollRegion. La valeur par défaut est true (vrai), ce qui signifie que la vue est contrainte à l'intérieur de la région de scroll.

Ligne de commande Nom : -height

Base de données Nom : height

Base de données Classe : Height

Spécifie la hauteur de la fenêtre que le widget canvas doit avoir lors de sa création, sous réserve que ceci soit possible. La hauteur peut être indiquée dans n'importe laquelle des formes décrites dans las section COORDONNEES, ci-dessous.

Ligne de commande Nom : -scrollregion

Base de données Nom : scrollRegion

Base de données Classe : ScrollRegion

Spécifie une liste contenant quatre coordonnées définissant une région rectangulaire. Cette région est utilisée par la fonction de scrolling et définit la zone dans laquelle il est possible d'avoir des informations. Chacune des coordonnées peut être spécifiée dans n'importe lequel des formats décrits dans la section COORDONNÉES ci-dessous.

Ligne de commande Nom : -state

Base de données Nom : state

Base de données Classe : State

Modifie l'état par défaut du canvas. Cet état peut être : normal, disabled (désactivé), ou hidden (caché). Chaque objet d'un canvas peut être dans un état qui lui est propre, et qui peut être différent de l'état par défaut. Beaucoup d'options peuvent prendre plusieurs valeurs, permettant aux objets du canvas, d'avoir un aspect particulier selon les différentes situations. Les options qui commencent avec active (actif), contrôlent l'apparence de l'objet quand le pointeur de la souris passe dessus, tandis que les options commençant par disabled (désactivé) contrôlent l'apparence quand l'état est désactivé. Les objets du canvas qui sont désactivés, ne réagissent pas aux bindings.

Ligne de commande Nom : -width

Base de données Nom : width

Base de données Classe : width

Spécifie la largeur de la fenêtre que le widget canvas doit avoir lors de sa création, sous réserve que ceci soit possible. La largeur peut être indiquée dans n'importe laquelle des formes décrites dans las section COORDONNÉES, ci-dessous.

Ligne de commande Nom : -xscrollincrement

Base de données Nom : xScrollIncrement

Base de données Classe : ScrollIncrement

Spécifie l'incrément pour le scrolling horizontal, la valeur peut être indiquée dans n'importe laquelle des unités autorisées pour définir les distances à l'écran. Si cette valeur est plus grande que zéro, la vue horizontale de la fenêtre sera contrainte telle que la coordonnée en x du canvas, sur la partie gauche de la fenêtre, soit toujours un multiple pair de xScrollIncrement ; de plus, le pas du scrolling (i. e. le changement de vue quand les flèches gauche et droite de la barre de scrolling sont sélectionnées) a exactement la valeur xScrollIncrement. Si la valeur de cette option est inférieure ou égale à zéro, alors le scrolling horizontal n'est pas contraint.

Ligne de commande Nom : -yscrollincrement

Base de données Nom : yScrollIncrement

Base de données Classe : ScrollIncrement

Spécifie l'incrément pour le scrolling vertical, la valeur peut être indiquée dans n'importe laquelle des unités autorisées pour définir les distances à l'écran. Si cette valeur est plus grande que zéro, la vue verticale de la fenêtre sera contrainte telle que la coordonnée en y du canvas, sur la partie haute de la fenêtre, soit toujours un multiple pair de yScrollIncrement ; de plus, le pas du scrolling (i. e. le changement de vue quand les flèches du haut et du bas, de la barre de scrolling sont sélectionnées) a exactement la valeur yScrollIncrement. Si la valeur de cette option est inférieure ou égale à zéro, alors le scrolling vertical n'est pas contraint.


INTRODUCTION


La commande canvas crée une nouvelle fenêtre (donnée par l'argument nom_du_canvas) et en fait un widget canvas. Des options supplémentaires, décrites ci-dessus, peuvent être spécifiées sur la ligne de commande ou dans la base de données des options. Ces options permettent de configurer l'aspect du canvas, telles que ses couleurs ou le relief 3-D. La commande canvas retourne la valeur de l'argument nom_du_canvas. Au moment où la commande est invoquée, il ne doit pas exister de fenêtre du même nom, par contre le parent de la fenêtre, doit exister.

Les widgets canvas implémentent des graphiques structurés. Un canvas permet d'afficher n'importe quel nombre d'objets ; ces objets peuvent être des rectangles, des cercles, des lignes ou du texte. Ces objets peuvent être manipulés (i.e. déplacés ou re-colorés) et des commandes peuvent être associées aux objets, de la même façon que la commande bind permet de lier des actions aux widgets. Par exemple, une commande particulière peut être associée à l'événement <Button-1>, telle que la commande soit invoquée quand le boutton 1 de la souris est pressé, le curseur de la souris étant sur un objet. Ceci spécifie que les objets du canvas peuvent avoir un comportement défini par les scriptes Tcl qui leur sont liés.


LISTE D'AFFICHAGE


Les objets d'un canvas ont un ordre d'affichage. Le premier objet de la liste d'affichage est affiché en premier, puis le prochain de la liste, et ainsi de suite. Les objets apparaissant en dernier peuvent cacher leur prédécesseurs. Il est parfois dit, qu'ils sont par dessus les objets précédents. Quand un nouvel objet est créé, il est placé à la fin de la liste d'affichage, par dessus tous les autres. Certaines commandes peuvent être utilisées pour modifier l'ordre de la liste d'affichage.

Les objets fenêtre sont une exception à la règle précédente. Le gestionnaire de fenêtres sous-jacent impose qu'elles soient toujours dessinées par dessus les autres objets. De plus, l'ordre d'empilement des fenêtres n'est pas affecté par les commandes du canvas ; vous devez utiliser la commande Tk raise and lower à la place.


IDENTIFIANT DES OBJETS ET TAGS


Les objets d'un widget canvas peuvent être nommés de deux façons : par un id (identifiant) ou par un tag. Chaque objet a un identifiant unique qui lui est affecté lors de sa création. L'id d'un objet ne change jamais, d'autre part cet id n'est jamais réutilisé durant toute la durée de vie du canvas.

Chaque objet peut être associé à un certain nombre de tags. Un tag n'est rien d'autre qu'une chaîne de caractères. Cette chaîne peut être un mélange de caractères alphabétiques et numériques mais ne peut - en aucun cas - être purement numérique. Par exemple, ``x123 est autorisé mais ``123 est interdit. Le même tag peut être associé à différents objets. Ceci est utilisé en pratique, pour grouper les objets. Par exemple, tous les objets sélectionnés peuvent avoir le tag ``selection''.

Le tag all est implicitement associé à chaque objet du canvas ; ce tag est utilisé pour invoquer des opérations affectant tous les objets du canvas.

Le tag current est géré automatiquement par Tk; il s'applique à l'objet courant, i.e. l'objet le plus en avant dans la liste d'affichage, se trouvant sous le pointeur de la souris. Si le pointeur de la souris n'est pas dans le canvas, ou s'il ne pointe pas un objet, alors aucun objet n'a le tag current.

Quand un objet est spécifié comme argument dans une commande du canvas, si le spécifiant est un entier, alors il est supposé se référer au seul objet qui possède cet id. Si le spécifiant n'est pas un entier, alors il est supposé se référer à tous les objets du canvas qui sont associés à ce tag. Le symbol tagOùId est utilisé ci-dessous pour indiquer qu'un argument spécifie un seul objet ou un tag qui regroupe zéro ou plusieurs objets.

tagOùId peut contenir des expressions logiques de tags, utilisant les opérateurs : '&&', '||', '^' '!', et des paranthèses regroupant des sous-expressions. Par exemple :

 .c find withtag {(a&&!b)||(!a&&b)}

ou de façon équivalente :

 .c find withtag {a^b}

Cette dernière expression trouvera tous les objets qui ont un tag "a" ou un tag "b", mais elle rejettera les objets qui possèdent les deux tags.

Certaines commandes des widgets ne peuvent opérer que sur un seul objet à la fois ; si tagOùId est spécifié de façon à se référer à plusieurs objets, alors le comportement normal de cette commande est d'utiliser le premier (le plus bas) de ces objets dans la liste d'affichage, sur lequel la commande peut s'appliquer. Des exceptions sont à noter et sont données dans la description des commandes ci-dessous.


COORDONNÉES


Toutes les coordonnées relatives aux canvas, sont stockées dans des nombres décimaux. Les coordonnées et les distances sont spécifiées en unité d'écran, ces valeurs sont aussi des nombres décimaux, optionnellement suivis de une ou plusieurs lettres. Si aucune lettre n'est ajoutée alors la distance est indiquée en nombre de pixels. Si cette lettre est m alors la distance est indiquée en millimètres mesurés sur l'écran ; s'il s'agit d'un c alors la distance est en centimètres : i signifie des pouces, et p signifie des points d'impression (1/72 de pouce). Les plus grandes valeurs de la coordonnée en y, se référent aux points les plus bas sur l'écran ; les plus grandes valeurs de la coordonnée en x, se référent aux points les plus à droite de l'écran. Les coordonnées peuvent être spécifiées par un nombre pair de paramètres, où par une seule liste de paramètres contenant un nombre pair de coordonnées x et y.


TRANSFORMATIONS


Normalement l'origine du système de coordonnées d'un canvas est le coin supérieur gauche de la fenêtre contenant le canvas. Il est possible d'ajuster cette origine en utilisant les commandes xview et yview du widget ; ceci est typiquement utilisé pour le scrolling. Il n'est pas possible d'appliquer un changement d'échelle ou une rotation, sur le système de coordonnées d'un canvas.

Individuellement, les objets peuvent être déplacés ou subir une dilatation , en utilisant des commandes décrites ci-dessous. En revanche, ils ne peuvent pas subir de rotation.


INDICES


Les objets texte supportent la notion d'index permettant d'identifier des positions particulières à l'intérieur du texte. De manière similaire, lignes et polygones supportent aussi cette notion d'index pour identifier, insérer et supprimer des sous-ensembles de leur coordonnées. Les indices sont utilisés par des commandes telles que l'insertion ou la suppression de tout un ensemble de caractères ou de coordonnées, et pour préciser la position du curseur d'insertion. Un index peut être spécifié de différentes manières, et différents types d'objets peuvent supporter différentes formes de spécification des indices. Les objets texte supportent les formes suivantes d'index ; si vous définissez de nouveaux objets ressemblants ou dérivés des objets texte, il sera judicieux que chacune de ces formes soit implémentée. Noter qu'il est possible de se référer à un caractère juste après le dernier de l'objet texte ; ceci est nécessaire pour permettre l'insertion de caractères à la fin du texte. Les lignes et les polygones ne supportent pas le curseur d'insertion et la sélection. Leur indices sont supposés être en nombre pair, car les coordonnées apparaissent toujours en nombre pair.

nombre La position d'un caractère, dans le texte, est donnée par un nombre décimal. La valeur 0 se réfère au premier caractère, 1 au suivant, et ainsi de suite. Dans le cas des lignes et des polygones, si les indexes ont des valeurs impaires, ils seront automatiquement décrémentés de la valeur 1. Un nombre inférieur à zéro est traité comme s'il était nul. Pour les polygones, les nombres inférieurs à 0 ou plus grands que la longueur de la liste des coordonnées, seront ajustés en ajoutant ou soustrayant la longueur, jusqu'à obtenir un résultat entre zéro et la longueur (incluse).

end Indique le caractère ou la coordonnée juste après la dernière de l'objet (il s'agit aussi du nombre de caractères ou de coordonnées dans l'objet).

insert Indique le caractère juste avant la position du curseur d'insertion de l'objet. Ceci n'est pas valable pour les lignes et les polygones.

sel.first Indique le premier caractère sélectionné dans l'objet. Si la sélection n'est pas dans l'objet, alors cette forme est illégale.

sel.last Indique le dernier caractère sélectionné dans l'objet. Si la sélection n'est pas dans l'objet, alors cette forme est illégale.

@x,y Indique le caractère ou la coordonnée au point repéré par x et y, où x et y sont spécifiés dans le système de coordonnées du canvas. Si x et y sont en-dehors de la zone recouverte par l'objet texte, alors elles se réfèrent au premier ou au dernier caractère de la ligne la plus proche du point donné.


MOTIFS EN POINTILLES


Beaucoup d'objets supportent la notion de contours en pointillés.

La première syntaxe possible est une liste d'entiers. Chaque élément représente le nombre de pixels d'un segment de la ligne. Seuls les segments impairs sont dessinés avec la couleur du contour. Les autres segments sont transparents.

La seconde syntaxe possible est une liste de caractères contenant seulement 5 caractères possibles [.,-_ ]. Le caractère d'espacement peut être utilisé pour agrandir l'espace entre les éléments de la ligne, et ne peut pas apparaître comme premier caractère d'une chaîne. Voici quelques exemples : -dash . = -dash {2 4} -dash - = -dash {6 4} -dash -. = -dash {6 4 2 4} -dash -.. = -dash {6 4 2 4 2 4} -dash {. } = -dash {2 8} -dash , = -dash {4 4}

La principale différence de syntaxe avec la précédente, est que la forme est conservée. Ceci signifie que toutes les valeurs de la liste dash seront multipliées par la largeur de la ligne avant l'affichage. Cette opération assure que le "." sera toujours affiché comme un point et que le "-" apparaîtra toujours comme un pointillé, indépendamment de la largeur de la ligne.

Sur les systèmes qui ne supportent qu'un nombre limité de motifs en pointillés, le motif choisi sera le plus proche de celui demandé, parmi ceux qui sont possibles. Par exemple, sur Windows, seuls les 4 premiers exemples ci-dessus sont valables. Si l'un des deux derniers motifs est demandé, c'est le premier motif qui sera affiché.


COMMANDES ASSOCIÉES AU WIDGET


La commande canvas crée une nouvelle commande Tcl dont le nom est nom_du_canvas. Cette commande peut être utilisée pour invoquer différentes opérations sur le widget. Elle a la forme suivante :

 ''nom_du_canvas option ''?''arg arg ...''?

Option et les args déterminent le comportement exact de la commande ; Les commandes suivantes sont possibles pour le canvas widget :

nom_du_canvas addtag tag spécification_de_recherche ?arg arg ...? Pour chaque objet vérifiant les contraintes spécifiées par spécification_de_recherche et les args, ajoute tag à la liste des tags associés à l'objet, s'il n'est pas déjà présent. Il est possible qu'aucun objet ne satisfasse les contraintes données par spécification_de_recherche et les args. Dans ce cas, la commande n'a aucun effet. Le résultat retourné par cette commande est une chaîne vide. Spécification_de_recherche et les arg's peuvent prendre les formes suivantes :

above tagOùId Sélectionne l'objet juste après (au-dessus) celui donné par tagOùId dans la liste d'affichage.

all Sélectionne tous les objets dans le canvas.

below tagOùId Sélectionne les objets juste avant (dessous) celui qui est donné par tagOùId dans la liste d'affichage. Si tagOùId correspond à plus d'un objet, alors le premier (le plus bas) des objets de la liste d'affichage, est utilisé.

closest x y ?halo? ?start? Sélectionne les objets les plus proches du point donné par x et y. Si plus d'un objet est à la distance la plus proche (i. e. deux objets recouvrent le point), alors l'objet le plus haut dans la liste d'affichage (le dernier dans la liste d'affichage), est utilisé. Si halo est spécifié, alors il doit avoir une valeur positive ou nulle. Tout objet plus proche que halo d'un point, est considéré comme recouvrant ce point. Si l'argument start est spécifié, il dénomme un objet utilisant un tag ou un id (si un tag est utilisé, il sélectionne le premier objet de la liste d'affichage correspondant à ce tag). Au lieu de sélectionner l'objet le plus proche du sommet de la liste d'affichage, cette forme sélectionne l'objet le plus proche du sommet et qui est juste en dessous de start dans la liste d'affichage ; si aucun objet n'existe, alors la sélection se comporte comme si l'argument start n'était pas spécifié.

enclosed x1 y1 x2 y2 Sélectionne tous les objets complètement contenus à l'intérieur de la région rectangulaire définie par x1, y1, x2, et y2. X1 ne doit pas être plus grand que x2, et y1 ne doit pas être plus grand que y2.

overlapping x1 y1 x2 y2 Sélectionne tous les objets qui sont complètement ou partiellement contenus dans la zone rectangulaire définie par x1, y1, x2, et y2. X1 ne doit pas être plus grand que x2, et y2 ne doit pas être plus grand que y2.

withtag tagOùId Sélectionne tous les objets donnés par tagOùId.

nom_du_canvas bbox tagOùId ?tagOùId tagOùId ...? Retourne une liste de 4 éléments donnant une estimation d'une zone rectangulaire contenant tous les objets dénommés par les arguments tagOùId. La liste à la forme ``x1 y1 x2 y2, telle que tous les éléments sont contenus dans la région bornée à gauche par x1, x2 à droite, y1 au sommet, et y2 au fond. Les valeurs retournées surestiment de quelques pixels, la plus petite zone de recouvrement. Si aucun objet ne correspond aux arguments tagOùId'' ou si les objets peuvent être recouverts par une boite de taille nulle (i.e. ils ne sont pas affichés), alors une chaîne vide est retournée.

nom_du_canvas bind tagOùId ?séquence? ?commande? Cette instruction associe la commande commande à tous les objets donnés par tagOùId telle que dès que la séquence d'événements séquence apparaît pour un des objets, alors la commande commande est invoquée. Cette instruction du widget canvas, est similaire à la commande bind à ceci près qu'elle opère sur les objets du canvas plutôt que sur le widget en entier. Vous pouvez vous référer à la page de manuel de bind pour plus de détails sur la syntaxe de sequence et les substitutions réalisées sur commande avant qu'elle ne soit invoquée. Si tous les arguments sont spécifiés alors le nouveau binding est créé, remplaçant n'importe quel autre binding correspondant à la même séquence et tagOùId (si le premier caractère de commande est ``+' alors commande s'ajoute au(x) binding(s) existant(s), au lieu de les remplacer). Dans ce cas la valeur retournée est une chaîne vide. Si commande et séquence sont omises alors l'instruction retourne une liste de toutes les séquences correspondant à des bindings définis pour tagOùId.

Les seules événements pour lesquels des bindings peuvent être spécifiés, sont ceux reliés à la souris ou au clavier (tels que Enter, Leave, ButtonPress, Motion, et KeyPress ou des événements virtuels). Le gestion des événements dans les canvas se fait sur l'objet courant défini dans la section IDENTIFIANTS DES OBJETS ET TAGS ci-dessous. Les événements Enter et Leave se déclenchent pour un objet donné quand il devient l'objet courant ou quand il cesse de l'être ; noter que ces événements sont différents des événements Enter et Leave associés aux fenêtres. Tous les événements associés à la souris sont redirigés vers l'objet courant, s'il en existe un. Les événements associés au clavier sont redirigés vers l'objet possédant le focus, s'il en existe un (voir le commande focus ci-dessous pour plus de détails). Si un événement virtuel est utilisé dans un binding, ce binding ne peut se déclencher que si l'événement virtuel est défini par un événement sous-jacent, associé à la souris ou au clavier.

Plusieurs binding peuvent correspondre à un même événement. Ceci peut arriver, par exemple, si un binding est associé à l'id d'un objet et un autre est associé avec le tag de l'objet. Dans ce cas, tous les bindings correspondant sont invoqués. Un binding associé au tag all est toujours invoqué en premier, suivi par les bindings correspondant à chaque tag de l'objet (dans l'ordre), suivi par le binding associé à l'id de l'objet. Si plusieurs bindings correspondent à un même tag, alors seul le plus spécifique est invoqué. Une commande continue dans un scripte exécuté par un binding, termine ce scripte. Une commande break termine ce scripte et saute tous les autres scriptes associés à l'événement. Ces mécanismes sont similaires à ceux de la commande bind.

Si des bindings ont été créés pour un objet canvas, par le commande bind, alors ils sont invoqués en plus des bindings créés pour les objets du canvas, par la commande bind du widget. Les bindings des objets sont invoqués avant ceux associés à la totalité du canvas.

nom_du_canvascanvasx écranx ?espacement_de_la_grille? Etant donnée une fenêtre d'abscisse écranx dans le repère du canvas, cette commande retourne l'abscisse la plus proche correspondant à la grille du canvas. Si espacement_de_la_grille est spécifié, alors la coordonnée est arrondie au multiple le plus proche de l'unité de la grille.

nom_du_canvas canvasy écrany ?espacement_de_la_grille? Etant donnée une fenêtre d'ordonnée écrany dans le repère du canvas, cette commande retourne l'ordonnée la plus proche correspondant à la grille du canvas. Si espacement_de_la_grille est spécifié, alors la coordonnée est arrondie au multiple le plus proche de l'unité de la grille.

nom_du_canvas cget option Retourne la valeur courante de l'option option.

nom_du_canvas configure ?option? ?valeur? ?option valeur ...? Questionne ou modifie la configuration des options du widget. Si aucune option n'est spécifiée, retourne une liste décrivant tous les options valables pour nom_du_canvas (voir [ConfigWidg] pour des informations sur le format de la liste). Si une ou plus des paires option-value sont spécifiées, alors la commande modifie la(les) valeur(s) de(des) option(s) pour la(les) valeur(s) donnée(s) ; dans ce cas, la commande retourne une chaîne vide. Option peut avoir n'importe laquelle des valeurs acceptées par la commande canvas.

nom_du_canvas coords tagOùId ?x0 y0 ...?

nom_du_canvas coords tagOùId ?liste_de_coordonnées? Questionne ou modifie les coordonnées qui définissent un objet. Si aucune coordonnée n'est spécifiée, cette commande retourne une liste dont les éléments sont les coordonnées de l'objet désigné par tagOùId. Si des coordonnées sont spécifiées, cette commande retourne une liste dont les éléments sont les coordonnées de l'objet désigné par tagOùId. Si les coordonnées sont spécifiées, alors elles se substituent aux coordonnées courantes de l'objet désigné. Si tagOùId désigne plusieurs objets, alors le premier de la liste d'affichage est utilisé.

nom_du_canvas create type x y ?x y ...? ?option valeur ...?

nom_du_canvas create type liste_de_coordonnées ?option valeur ...? Crée un nouvel objet dans nom_du_canvas de type type. Le format exact des arguments figurant après type, dépend de type, mais généralement ils correspondent aux coordonnées de un ou plusieurs points, suivis par les spécifications de zéro ou plusieurs options des objets. Voir la sous-section correspondant à chaque type d'objet, pour plus d'informations sur la syntaxe de cette commande. La commande retourne l'id du nouvel objet.

nom_du_canvas dchars tagOùId premier ?dernier? Pour chaque objet donné par tagOùId, efface les caractères, ou les coordonnées, dans le rang défini par premier et dernier, premier et dernier étant inclus. Si certains objets désignés par tagOùId ne supportent pas l'opération d'indexation, ils ignoreront la commande dchars. Les objets text interprètent premier et dernier comme étant les indices d'un caractère, les objets ligne et polygone interprètent les indices comme étant des coordonnées (sous forme d'un paire x,y). Le format des indices est décrit dans la section INDICES ci-dessus. Si dernier est omis, sa valeur par défaut est premier. Cette commande retourne une chaîne vide.

nom_du_canvas delete ?tagOùId tagOùId ...? Supprime chacun des objets désigné par tagOùId, et retourne une chaîne vide.

nom_du_canvas dtag tagOùId ?tag_à_supprimer? Pour chacun des objets désigné par tagOùId, supprime les tags définis par tag_à_supprimer de la liste de ceux associés avec l'objet. si tag_à_supprimer est omis alors la valeur par défaut est tagOùId. Cette commande retourne une chaîne vide.

nom_du_canvas find commande_de_recherche ?arg arg ...? Cette commande retourne une liste constituée de tous les objets vérifiant les contraintes définies par commande_de_recherche et arg arg .... Commande_de_recherche et les arg peuvent avoir n'importe laquelle des formes acceptées par la commande addtag. Les objets sont retournés dans l'ordre d'empilement, avec l'objet le plus bas de la pile, en premier.

nom_du_canvas focus ?tagOùId? Donne le focus clavier à l'objet du canvas désigné par tagOùId. Si tagOùId désigne plusieurs objets, alors le focus est donné au premier objet de la liste d'affichage qui supporte l'insertion d'un curseur. Si tagOùId ne se réfère à aucun objet, ou si aucun des objets ne supporte l'insertion d'un curseur, alors le focus reste inchangé. Si tagOùId est une chaîne vide, alors le focus est remis à zéro i.e. aucun objet n'a le focus. Si tagOùId n'est pas spécifié alors la commande retourne l'id de l'objet qui a le focus, ou une chaîne vide si aucun objet n'a le focus.

Une fois que le focus est donné à un objet, cet objet affiche le curseur d'insertion et tous les événements clavier sont dirigés vers cet objet. Le focus associé à un objet du canvas et le focus associé aux fenêtres de l'écran (fixé avec la commande focus) sont complètement indépendants : un objet donné ne peut pas avoir le focus à moins que (a) le canvas qui lui est associé soit la fenêtre qui a le focus (b) l'objet est celui du canvas, qui a le focus. Dans la plupart des cas, il est judicieux d'utiliser la commande focus pour donner le focus à la fenêtre du canvas (si elle ne l'a pas déjà).

nom_du_canvas gettags tagOùId Retourne une liste dont les éléments sont les tags associés avec l'objet désigné par tagOùId. Si tagOùId désigne plus d'un objet, alors les tags sont retournés dans l'ordre de la liste d'affichage. Si tagOùId ne désigne aucun objet, ou si l'objet n'est associé à aucun tag, alors une chaîne vide est retournée.

nom_du_canvas icursor tagOùId index Fixe la position du curseur d'insertion pour le(s) objet(s) désigné(s) par tagOùId, juste avant le caractère positionné à l'index index. Si quelques ou tous les objets désignés par tagOùId ne supportent pas le curseur d'insertion, alors la commande n'a aucun effet sur eux. Voir la section INDICES ci-dessus pour une description du format de index. Note : le curseur d'insertion est seulement affiché dans l'objet qui a le focus du clavier (voir la commande focus ci-dessous), mais la position du curseur peut être fixée quand l'objet n'a pas le focus. Cette commande retourne une chaîne vide.

nom_du_canvas index tagOùId index Cette commande retourne un nombre décimal donnant l'index numérique correspondant à index pour le widget associé à tagOùId. Index donne une description textuelle de la position désirée, la syntaxe est décrite dans la section INDICES ci-dessus. Les objets text interprètent index comme étant l'index d'un caractère, les objets line et polygone l'interprètent comme étant une coordonnée (i.e. un couple x,y). La valeur retournée est comprise entre 0 et le nombre total de caractères ; s'il s'agit d'une coordonnée, elle appartient nécessairement à l'objet. Si tagOùId désigne plusieurs objets, alors les indexes affichés correspondent aux widgets acceptant l'opération d'indexation (l'ordre de la liste est celui de la liste d'affichage).

nom_du_canvas insert tagOùId avant_ceci chaîne Pour chacun des objets désignés par tagOùId, si l'objet admet l'insertion de texte ou d'une coordonnée, alors la chaîne est insérée dans le texte de l'objet juste avant le caractère, ou la coordonnée, d'index avant_ceci. Les objets text interprètent avant_ceci comme étant l'index d'un caractère, les objets line et polygone l'interprète comme étant l'index d'une coordonnée (i.e. un couple x,y). Pour les objets line et polygone la chaîne doit être une coordonnée valide. Voir la section INDICES ci-dessus pour plus d'informations sur les formes possibles de avant_ceci. Cette commande retourne une chaîne vide.

nom_du_canvas itemcget tagOùId option Retourne la valeur courante de l'option de configuration de l'objet désigné par tagOùId. Cette commande est similaire à la commande cget, excepté qu'elle s'applique à un objet particulier plutot qu'au widget dans sa totalité. Option peut avoir n'importe laquelle des valeurs acceptées par la commande create du widget. Si tagOùId est un tag désignant plus d'un objet, le premier (le plus bas dans la liste d'affichage) est utilisé.

nom_du_canvas itemconfigure tagOùId ?option? ?valeur? ?option valeur ...? Cette commande est similaire à la commande configure, à ceci près qu'elle modifie une option spécifique pour tous les objets désignés par tagOùId au lieu de modifier les options pour la totalité du widget canvas. Si aucune option n'est spécifiée, la commande retourne une liste décrivant tous les options valables pour le premier objet donné par tagOùId (voir [ConfigWidg] pour plus d'informations sur le format de cette liste). Si option est spécifiée sans aucune valeur associée, alors la commande retourne une liste décrivant cette option (cette liste est identique à la sous-liste correspondant à l'option retournée par la commande si aucune option n'est spécifiée). Si au moins une paire option-value est spécifiée, alors la commande modifie l'(les) option(s) pour la(les) valeur(s) donnée(s), pour chacun des objets désignés par tagOùId ; dans ce cas la commande retourne une chaîne vide. Les option et valeur sont les mêmes que celles autorisées par la commande create ; voir les sections décrivant les objets correspondants pour plus de détails sur les options possibles.

nom_du_canvas lower tagOùId ?avant_ceci? Déplace tous les objets désignés par tagOùId à une nouvelle position dans la liste d'affichage, juste avant celle de l'objet désigné par avant_ceci. Si tagOùId désigne plus d'un objet, ils sont tous déplacés en conservant leur ordre relatif. Avant_ceci est un tag ou un id ; s'il désigne plus d'un objet, alors le premier (le plus bas dans la liste d'affichage) est utilisé. Note : cette commande n'a pas d'effet sur les objets de type fenêtre. Les objets de type fenêtre cachent toujours les objets des autres types, et l'ordre d'empilement des objets de type fenêtre est déterminé par les commandes raise et lower, et non par les commandes raise et lower du widget canvas. Cette commande retourne une chaîne vide.

nom_du_canvas move tagOùId xAjouté yAjouté Déplace chacun des objets désigné par tagOùId dans l'espace des coordonnées du canvas, en ajoutant xAjouté et yAjouté, respectivement à l'abscisse et à l'ordonnée de chacun des points associés à l'objet. Cette commande retourne une chaîne vide.

nom_du_canvas postscript ?option valeur option valeur ...? Génère une représentation Postscript pour une partie ou la totalité du canvas. Si l'option -file est spécifiée, alors le Postcript est écrit dans un ficher et une chaîne vide est retournée par la commande. Si l'interpréteur auquel appartient le canvas, est marqué comme safe, l'opération échouera car un interpréteur safe n'est pas autorisé à écrire un fichier. Si l'option -channel est spécifiée, l'argument indique le nom du canal déjà ouvert pour l'écriture. Le Postscript est écrit sur ce channel, et -à la fin de l'opération- le channel est laissé ouvert pour d'autres opérations d'écriture. Le Postscript généré est du Postscript encapsulé utilisant la version 3.0 de la Convention des Documents Structurés (Document Structuring Conventions). Note : Par défaut, le Postscript ne contient que les informations qui apparaissent dans la fenêtre du canvas. Si le canvas vient juste d'être créé, il a une taille initiale de 1x1 pixel, ainsi rien n'apparaitra dans le Postscript. Pour contourner ce problème, il est possible d'invoquer la commande update pour attendre que la fenêtre du canvas atteigne sa taille finale. Il est aussi possible d'utiliser les options -width et -height pour spécifier la surface du canvas à imprimer. Les paires option-valeur fournissent des informations supplémentaires pour contrôler la génération du Postscript. Les opérations suivantes sont supportées :

-colormap nom_de_variable Nom_de_variable doit être le nom d'un tableau qui contient la palette de couleur à utiliser pour le Postscript. Chaque élément de nom_de_variable consiste en un code Postscript qui détermine une couleur particulière (i.e. ``1.0 1.0 0.0 strgbcolor''). Lors de la génération du Postscript, Quand des informations sur les couleurs sont nécessaires, Tk contrôle s'il existe un élément de nom_de_variable de même nom que la couleur. Si cette option n'a pas été spécifiée, ou s'il n'existe pas d'entrée dans nom_de_variable pour une couleur donnée, alors Tk utilise les intensités de rouge, vert, et bleu des couleurs de X-Windows.

-colormode mode Spécifie comment sortir les informations sur la couleur. Mode peut prendre les valeurs color (pour une sortie couleur), gray (convertit toutes les couleurs dans leur équivalent sur une échelle des gris) ou mono (convertit toutes les couleurs en noir et blanc).

-file nom_de_fichier Spécifie le nom du fichier dans lequel écrire le Postscript. Si cette option n'est pas spécifiée alors le Postscript est retourné comme résultat de la commande au lieu d'être envoyé dans un fichier.

-fontmap nom_de_variable Nom_de_variable doit être le nom d'un tableau qui spécifie la carte des fontes à utiliser pour le Postscript. Chaque élément de nom_de_variable consiste en une liste Tcl composée de deux éléments, qui correspondent au nom et à la taille de point de la fonte Postscript. Lors de la génération du Postscript, si une commande concernant une fonte particulière est rencontrée, Tk contrôle si nom_de_variable contient un élément de même nom que la fonte. Si un tel élément existe, alors les informations sur la fonte, contenues dans le tableau, sont utilisées. Autrement Tk tente de deviner la fonte Postscript à utiliser. Généralement Tk n'identifie que des fontes bien connues telles que Times, Helvetica et Courier, et seulement si les noms des fontes X n'omettent aucun trait d'union entre les tailles de points. Par exemple, -*-Courier-Bold-R-Normal--*-120-* fonctionnera tandis que *Courier-Bold-R-Normal*120* ne fonctionnera pas ; Tk a besoin des traits d'union pour pouvoir parser le nom de la fonte.

-height taille Spécifie la hauteur de la surface du canvas à imprimer. La valeur par défaut est la hauteur de la fenêtre du canvas.

-pageanchor ancre Spécifie quel point de la zone du canvas à imprimer doit apparaître sur le point de positionnement de la page (celui-ci est défini par les options -pagex et -pagey). Par exemple, -pageanchor n signifie que le centre de la partie supérieure de la zone du canvas devant être imprimée, doit être sur le point de positionnement. La valeur par défaut est center.

-pageheight taille Indique que le Postscript doit être dilaté à la fois en x et en y tel que la zone imprimée est la hauteur taille sur la page Postscript. Taille est une valeur décimale suivie de c pour des centimètres, i pour des pouces, m pour des millimètres, p ou rien du tout pour des points d'impression (1/72 de pouce). La hauteur par défaut est celle de la zone telle qu'elle apparaît à l'écran. Si les options -pageheight et -pagewidth sont toutes deux spécifiées, alors le facteur d'échelle indiqué par -pagewidth est utilisé (la dilation selon des valeurs différentes pour les deux axes, n'est pas implémentée).

-pagewidth taille Indique que le Postscript doit être dilaté à la fois en x et en y tel que la zone imprimée est la largeur taille sur la page Postscript. La largeur par défaut est celle de la zone telle qu'elle apparait à l'écran. Taille a la même forme que pour l'option -pageheight. Si les options -pageheight et -pagewidth sont toutes deux spécifiées, alors le facteur d'échelle indiqué par -pagewidth est utilisé (la dilation selon des valeurs différentes pour les deux axes, n'est pas implémentée).

-pagex position Position donne l'abscisse du point de positionnement de la page Postscript. Cette valeur peut prendre n'importe laquelle des formes autorisées par l'option -pageheight. A utiliser en conjonction avec les options -pagey et -pageanchor pour déterminer où la zone à imprimer apparait sur la page Postscript. La valeur par défaut correspond au centre de la page.

-pagey position Position donne l'ordonnée du point de positionnement de la page Postscript. Cette valeur peut prendre n'importe laquelle des formes autorisées par l'option -pageheight. A utiliser en conjonction avec les options -pagex et -pageanchor pour déterminer où la zone à imprimer apparait sur la page Postscript. La valeur par défaut correspond au centre de la page.

-rotate booléen Booléen spécifie si la zone à imprimer doit être tournée de 90 degrés. Si la zone n'est pas tournée, l'axe des x correspond au coté le plus court de la page (orientation ``portrait) ; si la zone est tournée, l'axe des x correspond au côté le plus long de la page (orientation ``paysage). La valeur par défaut est non-tourné.

-width taille Spécifie la largeur de la zone à imprimer. La valeur par défaut est la largeur de la fenêtre du canvas.

-x position Spécifie la coordonnée en x de l'arrête gauche de la zone du canvas à imprimer, dans le système de coordonnées du canvas, et non dans celui de la fenêtre. La valeur par défaut est la coordonnée de l'arrête gauche de la fenêtre.

-y position Spécifie la coordonnée en y de l'arrête haute de la zone du canvas à imprimer, dans le système de coordonnées du canvas, et non dans celui de la fenêtre. La valeur par défaut est la coordonnée de l'arrête haute de la fenêtre.

nom_du_canvas raise tagOùId ?au_dessus_de_ceci? Déplace tous les objets désignés par tagOùId vers une nouvelle position dans la liste d'affichage, juste après l'objet définit par au_dessus_de_ceci. Si tagOùId désigne plusieurs objets, alors ils sont déplacés tels que leur ordre relatif soit conservé. Au_dessus_de_ceci est un tag ou un id ; s'il désigne plusieurs objets, c'est le dernier de la liste d'affichage qui est utilisé pour déterminer la nouvelle position des objets déplacés. Note : cette commande n'a aucun effet sur les objets de type fenêtre. Les objets de type fenêtre cachent toujours les objets des autres types, et l'ordre d'empilement des objets de type fenêtre est déterminé par les commandes raise et lower, et non par les commandes raise et lower du widget canvas. Cette commande retourne une chaîne vide.

nom_du_canvas scale tagOùId xOrigine yOrigine xCoefficient yCoefficient Dilate tous les objets désignés par tagOùId dans le système de coordonnées du canvas. XOrigines et yOrigine définissent l'origine pour l'opération de dilatation, xCoefficient et yCoefficient définissent les coefficients de dilatation, respectivement le long de l'abscisse et de l'ordonnée (un facteur de dilatation égale à 1.0 implique qu'il n'y pas de dilatation le long d'un axe). Pour chacun des points de chaque objet, la coordonnée en x est modifiée telle que la distance de xOrigine soit multipliée par le facteur xCoefficient. De même, pour chacun des points de chaque objet, la coordonnée en y est modifiée telle que la distance de yOrigine soit multipliée par le facteur yCoefficient. Cette commande retourne une chaîne vide.

nom_du_canvas scan option args Cette commande est utilisée pour implémenter le balayage de tout un canvas. Elle a deux formes, selon la valeur de l'option :

nom_du_canvas scan mark x y Enregistre x et y ainsi que la vue courante du canvas ; cette commande est utilisée en conjonction avec la commande scan dragto (voir ci-dessous). Typiquement, cette commande est associée avec l'action de presser un bouton de la souris, dans le widget ; x et y sont alors les coordonnées du pointeur de la souris. Cette commande retourne une chaîne vide.

nom_du_canvas scan dragto x y ?gain?. Cette commande calcule la différence entre les valeurs des arguments x et y (lesquels sont typiquement les coordonnées du pointeur de la souris), et les valeurs de x et y fixées par la dernière commande scan mark (voir ci-dessus). La vue est alors ajustée de gain fois la différence entre les coordonnées. La valeur par défaut de gain est 10. Cette commande est typiquement associée à l'événement ``déplacer la souris'', pour produire l'effet de tirer le canvas à travers la fenêtre. La commande retourne une chaîne vide.

nom_du_canvas select option ?tagOùId arg? Agit sur la sélection de une ou plusieurs façons, selon la valeur de l'option. La commande peut prendre n'importe laquelle des formes décrites ci-dessous. Dans toutes les descriptions ci-dessous, tagOùId doit désigner un objet qui supporte les opérations d'indexation et de sélection ; si le tag désigne plusieurs objets, alors le premier qui supporte ces opérations, est utilisé. Index est une description textuelle de la position dans tagOùId, comme décrit dans la section INDICES ci-dessus.

pathName select adjust tagOùId index Dans le widget désigné par tagOùId, localise la fin de la sélection la plus proche du caractère donnée par index, et ajuste la sélection telle qu'elle se finisse à l'index index (i.e. incluant mais n'allant pas au-delà de index). L'autre fin de sélection est utilisée comme point d'ancrage pour une future commande select to. La commande retourne une chaîne vide.

nom_du_canvas select clear Vide la sélection si elle est dans ce widget. Si la sélection n'est pas dans ce widget, alors la commande n'a aucun effet. Cette commande retourne une chaîne vide.

nom_du_canvas select from tagOùId index Fixe le point d'ancrage de la sélection pour le widget, tel qu'il soit juste avant le caractère localisé à la position index, pour l'objet désigné par tagOùId. Cette commande ne modifie pas la sélection ; elle fixe juste la fin de la sélection pour une future commande select to. Cette commande retourne une chaîne vide.

nom_du_canvas select item Retourne l'id de l'objet sélectionné, si la sélection est dans l'objet du canvas. Si la sélection n'est pas dans le canvas, alors une chaîne vide est retournée.

nom_du_canvas select to tagOùId index Fixe la sélection telle qu'elle corresponde aux caractères de tagOùId compris entre le point d'ancrage et index. La nouvelle sélection inclut le caractère donné par index ; elle inclut le caractère donné par le point d'ancrage, seulement si index est plus grand ou égal à l'index du point d'ancrage. Le point d'ancrage est déterminé par la commande select adjust ou select from la plus récente. Si le point d'ancrage de la sélection n'est pas dans tagOùId, alors il est défini comme étant celui donné par index. Cette commande retourne une chaîne vide.

nom_du_canvas type tagOùId Retourne le type de l'objet donné par tagOùId, par exemple rectangle ou text. Si tagOùId désigne plus d'un objet, alors le type du premier objet de la liste d'affichage est retourné. Si tagOùId ne désigne aucun objet, alors une chaîne vide est retournée.

nom_du_canvas xview ?args? Cette commande est utilisée pour questionner ou modifier la position horizontale des informations affichées dans la fenêtre du canvas. Elle peut prendre les formes suivantes :

nom_du_canvas xview Retourne une liste de deux éléments. Chaque élément est un nombre réel compris entre 0 et 1 ; chacun d'eux décrit le pan horizontal visible dans la fenêtre. Par exemple, si le premier élément est 0.2 et le second 0.6, 20% de la surface du canvas (comme défini par l'option -scrollregion) est hors de l'écran par la gauche, et 40% du centre est visible. Ce sont les mêmes valeurs que celles passées via l'option -xscrollcommande.

nom_du_canvas xview moveto fraction Ajuste la vue dans la fenêtre telle que la fraction de la largeur totale du canvas, soit hors de l'écran à gauche. Fraction doit être compris entre 0 et 1.

nom_du_canvas xview scroll nombre quoi Cette commande déplace la vue de la fenêtre vers la gauche ou la droite selon les valeurs de nombre et quoi. Nombre doit être un entier. Quoi peut être soit units ou pages ou une abréviation de ces deux valeurs. Si quoi a la valeur units, la vue est ajustée vers la gauche ou la droite en unités de l'option xScrollIncrement, si la valeur est plus grande que zéro, sinon en unités d'un dixième de la largeur de la fenêtre. Si quoi a la valeur pages alors la vue est ajustée en unités de neuf dixièmes de la hauteur de la fenêtre. Si nombre est négatif alors les informations plus loin que la gauche deviennent visibles ; si nombre est positif les information plus loin que la droite deviennent visibles.

nom_du_canvas yview ?args? Cette commande est utilisée pour questionner ou modifier la position verticale de l'information affichée dans la fenêtre du canvas. Elle peut prendre les formes suivantes :

nom_du_canvas xview Retourne une liste de deux éléments. Chaque élément est un nombre réel compris entre 0 et 1 ; chacun d'eux décrit le pan vertical visible dans la fenêtre. Par exemple, si le premier élément est 0.6 et le second 1, 40% de la surface inférieure du canvas (comme défini par l'option -scrollregion) est visible. Ce sont les mêmes valeurs que celles passées via l'option -yscrollcommande.

nom_du_canvas yview moveto fraction Ajuste la vue dans la fenêtre telle que la fraction de la largeur totale du canvas, soit hors de l'écran vers le haut. Fraction doit être compris entre 0 et 1.

nom_du_canvas yview scroll nombre quoi Cette commande déplace la vue de la fenêtre vers le haut ou le bas selon les valeurs de nombre et quoi. Nombre doit être un entier. Quoi peut être soit units ou pages ou une abréviation de ces deux valeurs. Si quoi a la valeur units, la vue est ajustée vers le haut ou le bas en unités de l'option yScrollIncrement, si la valeur est plus grande que zéro, sinon en unités d'un dixième de la hauteur de la fenêtre. Si quoi a la valeur pages alors la vue est ajustée en unités de neuf dixièmes de la hauteur de la fenêtre. Si nombre est négatif alors les informations plus loin que le haut deviennent visibles ; si nombre est positif les information plus loin que le bas deviennent visibles.


PRÉSENTATION DES DIFFÉRENTS TYPES D'OBJETS


Les sections ci-dessous décrivent les différents types d'objets supportés par le widget canvas. Chaque type d'objet est caractérisé par deux choses : premièrement, la forme de la commande create utilisée pour créer une instance de ce type ; et deuxièmement, l'ensemble des options de configuration pour les objets de ce type, lesquelles doivent être utilisées avec les commandes create ou itemconfigure du widget. La plupart des objets ne supportent pas les opérations d'indexation ou de sélection, ainsi que les commandes qui leur sont reliées telles que index et insert. Les objets qui supportent ces opérations sont les objets de type text, line ou polygon. Pour les objets de type line et polygon, les opérations d'indexation sont utilisées pour manipuler les coordonnées de l'objet.


OPTIONS COMMUNES A TOUS LES OBJETS


Certains objets partagent un ensemble commun d'options. Ces options sont décrites ici, elles sont valides pour tous les types d'objets.

-dash pattern

-activedash pattern

-disableddash pattern Cette option spécifie les motifs en pointillés pour les différents états d'un objet : normal, actif et désactivé. Pattern peut avoir n'importe laquelle des formes acceptées par [GetDash]. Si l'option -dash n'est pas précisée, alors le motif par défaut est une ligne solide. Voir "MOTIFS EN POINTILLES" pour plus d'informations.

-dashoffset offset L'offset en pixels, au début du motif défini par l'option -dash. -dashoffset est ignoré si l'option -dash n'est pas utilisée. L'offset peut avoir n'importe laquelle des formes décrites dans la section COORDONNÉES ci-dessus.

-fill couleur

-activefill couleur

-disabledfill couleur Spécifie la couleur utilisée pour remplir la surface de l'objet pour ses différents états possibles : normal, actif, et désactivé. Couleur peut avoir n'importe laquelle des formes acceptées par [GetColor]. Si couleur est une chaîne vide (valeur par défaut), alors l'objet n'est pas rempli. Pour les objets de type line, cette option spécifie la couleur de la ligne. Pour les objets de type text, cette option spécifie la couleur du texte.

-outline couleur

-activeoutline couleur

-disabledoutline couleur Cette option spécifie la couleur qui doit être utilisée pour dessiner le contour d'un objet pour ses différents états possibles : normal, actif, et désactivé. Couleur peut avoir n'importe laquelle des formes acceptées par [GetColor]. La valeur par défaut de l'option est black (noir). Si couleur est une chaîne vide, alors le contour n'est pas dessiné.

-offset offset Spécifie l'offset du motif en pointillés. La valeur de l'offset peut être donnée sous la forme x,y ou en précisant une face, telle que n, ne, e, se, s, sw, w ou center (centre). Dans le premier cas, l'origine est celle du toplevel de la fenêtre courante. Pour le canvas et les objets du canvas, l'origine est celle du canvas, mais ajouter un # devant la paire de coordonnées, indique qu'il faut utiliser l'origine du toplevel. Pour les objets canvas, l'option -offset est aussi utilisée pour les motifs en pointillés. Pour les objets de type line (ligne) et polygon (polygone), il est possible de spécifier un index comme argument, qui connecte l'origine du motif en pointillés à un des points de la ligne ou du polygone.

-outlinestipple bitmap

-activeoutlinestipple bitmap

-disabledoutlinestipple bitmap Cette option spécifie le motif en pointillés qui doit être utilisé pour dessiner le contour d'un objet pour les différents étaLJ


Catégorie Manuel Tcl/Tk