Introduction to drawing

The Slate is an extension of the Tk canvas, and is, as far as possible, fully upwards-compatible with the canvas -- any code that works with the canvas should work if a Slate is substituted for the canvas.

The Slate (like the canvas) has a large number of operations, and this document only gives a cursory overview of most of them. For more detailed information on the kinds of operations supported by the canvas and the Slate, see the Tk canvas documentation and the Slate code documentation.

To illustrate the operation of the slate, we will create a slate in a blank toplevel window. Normally, however, you will use the slate inside the Graphics widget, or within your own custom widget. To create the slate, call the slate procedure:

::tycho::Displayer .t
::tycho::slate .t.s
pack .t.s -fill both -expand on
.t centerOnScreen
set slate .t.s
(In future, we'll just source a file containing this code.) You may want to experiment further with Slate operations while executing this tutorial; to do so, simply type commands into the Tycho console.

The graphical items drawn on the slate are called just that: items. The create method creates new items. Its first argument is the type of the item; this is followed by two or more coordinates at which to create the items, and these are followed by zero or more options. Coordinates are in the form x-value followed by y-value; options are in the form -optionname optionvalue.

The Slate supports all canvas item types, including rectangle, oval, polygon, line, and text. In addition, the Slate has complex items composed of one or more of these primitive items, including Frame (a psuedo-3D rectangle), Solid (a psuedo-3D polygon), labelled ovals and rectangles, and any other complex item anyone cares to defined with an Itcl class. (See Creating custom items.) Note that primitive item types start with a lower-case letter; complex item types start with an upper-case letter. Items are created with the create method, which returns a unique ID that can be used later to access the item; here is a selection:

set r [$slate create rectangle 60 20 80 40 -fill red]
set o [$slate create oval 60 60 100 80 -outline blue -width 3]
set l [$slate create line 30 30 30 50 50 50 50 70 -arrow last]
set f [$slate create Frame 120 120 150 140 -borderwidth 4 -color green]
set s [$slate create Solid 100 20 120 20 120 10 140 30 120 50 120 40 100 40]

To read the coordinates of an item, use the coords method:

$slate coords $r

To change the coordinates of an item, supply arguments to coords:

$slate coords $r 50 10 90 25

To move an item, use the move method:

$slate move $l 10 10

To delete an item, use delete:

$slate delete $o

Each item has a number of configuration options, which have names beginning with a dash; the -fill option to the'first call to create above is a configuration option. Options follow the coordinates when an item is created. Later on, options can be queried with itemcget:

$slate itemcget $r -fill
Options can be set with itemconfigure:
$slate itemconfigure $f -relief sunken
To see all options of an item, use itemconfigure with no arguments:
$slate itemconfigure $f
The slate can be used to find the IDs of items satisfying some criterion:
$slate find overlapping 100 30 120 60
(See the Slate documentation for other types of find.) Any item can have an arbitrary set of tags attached to it. The tags are one of the configuration options. We'll add a tag to a couple of items:
$slate create rectangle 100 30 120 60 -outline red
$slate addtag fred overlapping 100 30 120 60
$slate addtag fred withtag $f
$slate addtag fred withtag $l
The addtag method has the same kind of specification as find -- you can add a tag to items enclosed by a given rectangle, for example.

You can find the "bounding box" of an item or a set of items with a given tag:

eval $slate create rectangle [$slate bbox fred] -outline grey
Tags can also be given as arguments to many of the other Slate methods, including delete and move:
$slate move fred 10 10
The dtag method removes tags from items:
$slate dtag $f fred
$slate move fred 10 10

Next
Back up
Tycho Home Page


Copyright © 1996, The Regents of the University of California. All rights reserved.
Last updated: 96/12/11, comments to: johnr@eecs.berkeley.edu