The Bitmap Image Type

The Bitmap command can read XBM data from a file or directly from data embedded in your Perl/Tk program. Suppose we have a bitmap of a circle. The following code creates the bitmap image from the XBM file and gives it a black foreground (the circle) and a white background. The image is placed inside a Label with a gray background, and then it’s packed:

my $b = $mw->Bitmap(-file       => 'circle.xbm',
                    -foreground => 'black',
                    -background => 'white',
);

my $l = $mw->Label(-image => $b, -background => 'gray')->pack;

Since the Label shrink-wraps around the image, all we see is the picture shown in Figure 17-5. Notice also that we’ve omitted any mask file.

A bitmap of a circle without a mask

Figure 17-5.  A bitmap of a circle without a mask

Suppose we copy the original bitmap and invert it (that is, toggle all the bits so ones become zeros and zeros become ones) and save the result as a mask file. This statement reconfigures the Bitmap image and adds a -maskfile option, producing a transparent area where the circle used to be (Figure 17-6), allowing the Label’s gray color to show through:

$b->configure(-maskfile => 'images/circle.msk');

Notice the bitmap’s background color appears wherever the mask has an on bit and the original source bit is off.

Mask that’s an inverted version of bitmap makes the bitmap’s foreground transparent

Figure 17-6.  Mask that’s an inverted version of bitmap makes ...

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.