Next: Tags
Up: CDE - Entwicklungsumgebung
Previous: CDE - Entwicklungsumgebung
Zur Darstellung der Abhängigkeiten zwischen den Dateien eignet sich das
Canvas-Widget. Es stellt eine Art Zeichenbrett dar, auf dem graphische Objekte
wie z.B. Rechtecke, Linien, Texte und auch Bitmaps dargestellt werden können.
Wie auch beim Text-Widget sind hier Gruppierungen von Objekten durch das sog.
Tagging möglich.
Zur Zeit (Tk4.0) unterstützt das Canvas-Widget folgende
Graphikprimitiven:
- Rechtecke ( rectangle) können als Umrandung, als ausgefüllter
Bereich oder auch als Kombination aus beiden gezeichnet werden. Als
Attribute können sie sowohl Farbe und Strichstärke der Umrandung als
auch die Füllfarbe und das Füllmuster bestimmen.
- Kreise, Ellipsen ( oval) können mit den gleichen Attributen wie
Rechtecke konfiguriert werden.
- Linien ( line) bestehen aus einem oder mehreren einzelnen Segmenten,
wobei die Strichstärke, Farbe, Punktdichte festgelegt werden können,
ob die Verbindung zwischen den Segmenten abgerundet oder auf Gehrung
ausgeführt werden sollen und ob Pfeilspitzen an den Eckpunkten der Linie
zu zeichnen sind.
- Bezier-Kurven ( line) sind ähnlich wie Linien, nur daß die Punkte durch
kubische Splines anstelle von geraden Linien verbunden werden.
- Polygone ( polygon) geschlossener Linienzug der aus mindestens drei Punkten
besteht. Die Attribute sind ähnlich wie bei Rechtecken, und über ein
zusätzliches Attribut kann der Linienzug als Spline (Bezier-Kurve)
dargestellt werden.
- Kreisabschnitte ( arc) können in unterschiedlichen Ausführungen gezeichnet
werden, z.B als Kreisbogen, als Kreissegment oder als Kreisausschnitt.
Attribute wie den eingeschlossenen Winkel, Farbe und Strichstärke
der Umrandung und Farbe des eingeschlossenen Bereichs können angegeben werden.
- Texte ( text) können aus einer oder mehreren Zeilen bestehen. Zusätzlich
kann noch die Schriftart und Größe eingestellt werden.
- Bitmaps ( bitmap) bestehen aus dem Namen einer Bitmap und jeweils einer
Farbe für Vorder- und Hintergrund.
- Widgets ( window) aus allen Klassen können in ein Canvas innerhalb von
Graphiken und Texten eingebettet werden, wobei das Canvas das Geometry-Managment
übernimmt. Hierbei ist zu beachten, daß dieses Widget vorher erzeugt werden
muß und anschließend mit der Ressource -widget in das Canvas-Widget eingefügt
wird.
Diese Objekte werden alle über die create-Methode des Canvas-Widgets
erzeugt:
CanvasName create ObjectType x y [x y ...] [option value ...]
Hierbei ist CanvasName der Name des Canvas-Widgets in welchem das Objekt
ObjectType an der Position x, y erzeugt werden soll (je nach
Objekt können mehrere Koordinaten erforderlich sein). Zu beachten ist hierbei,
daß dem Canvas-Widget das Koordinatensystem des X-Window Systems zugrundeliegt;
der Ursprung befindet sich in der linken oberen Ecke. Die create-Methode
liefert anschließend eine ID (eindeutige Nummer) zurück, über welche das
Objekt wieder referenziert werden kann.
Soll ein Objekt wieder gelöscht werden so stellt das Canvas-Widget die delete-
Methode zur Verfügung.
CanvasName delete ObjectID
Sollen die Ressourcen eines Objektes verändert werden, so kann dazu die
itemconfigure-Methode benutzt werden.
CanvasName itemconfigure ObjektID Resource Value
Wie in Kapitel 4 bereits erklärt wurde, kann mit dem bind-Befehl ein
Tcl-Script an ein Event gebunden werden. Dies ist auch beim Canvas-Widget
möglich, allerdings ist es mit dem bind-Kommando nicht möglich ein
Skript an ein Event für ein bestimmtes Objekt in einem Canvas zu knüpfen.
Um diese feinere Auflösung zu erreichen stellt das Canvas-Widget eine
eigene bind-Methode zur Verfügung.
CanvasName bind ObjektID Event Script
Folgendes Beispiel soll dies verdeutlichen indem mehrere
Objekte erzeugt werden und ihre Eigenschaften ändern wenn sich der Mauscursor
über ihnen befindet.
Figure: Canvas-Widget
#!/usr/bin/wish -f
canvas .c -width 7c -height 6c
pack .c
set rec [ .c create rectangle 1c 1c 3c 3c -fill darkgreen ]
set pol [ .c create polygon 3.5c 1c 7c 5c 6c 2c -fill darkgreen ]
set cir [ .c create oval 5c 5c 1c 3.5c -fill darkgreen ]
.c bind $rec <Any-Enter> { .c itemconfigure current -fill red }
.c bind $rec <Any-Leave> { .c itemconfigure current -fill darkgreen }
.c bind $pol <Any-Enter> { .c itemconfigure current -fill red }
.c bind $pol <Any-Leave> { .c itemconfigure current -fill darkgreen }
.c bind $cir <Any-Enter> { .c itemconfigure current -fill red }
.c bind $cir <Any-Leave> { .c itemconfigure current -fill darkgreen }
Next: Tags
Up: CDE - Entwicklungsumgebung
Previous: CDE - Entwicklungsumgebung
Sascha Scherer
Fri Dec 6 09:58:01 MET 1996