Bitmap Primitives

Prior to the advent of images, Tk supported simple bitmap operations. All the button-like widgets, plus Canvas, Dialog, and Label, have a -bitmap option whose value is either a string specifying a built-in bitmap name or an XBM filename with a leading @ character. This code displays the built-in bitmaps and an XBM file:

my $row = my $col = 0;
foreach my $b (qw/error gray75 gray50 gray25 gray12
      hourglass info questhead question Tk transparent warning/) {
    $mw->Label(-text => $b)->grid(-row => $row, -column => $col);
    $mw->Label(-bitmap => $b)->grid(-row => $row+1, -column => $col++);
    if ($col > 4) {$row +=2; $col = 0}
}

my $c = $mw->Canvas(qw/-width 35 -height 35/);
$c->grid(-row => $row, -column => 3);
$c->createBitmap(20, 20, -bitmap => '@images/Icon.xbm');

Figure 17-2 shows the bitmaps.

Bitmaps are built-in or read from a file

Figure 17-2.  Bitmaps are built-in or read from a file

Bitmaps are also used as application icons and cursors. MainWindows and Toplevels have iconbitmap and iconmask methods that define an application icon:

$mw->iconbitmap('@images/Icon.xbm');

Tk provides scores of built-in cursors, depicted in Figure 23-2. To build your own cursor, you need an XBM file and a mask file. A cursor specification is a reference to an array of four elements:

[qw\@images/mouse.xbm images/mouse.mask blue yellow\]

The array elements are the XBM filename, the mask filename, the foreground color, and the background ...

Get Mastering Perl/Tk now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.