O'Reilly logo

Mastering Perl/Tk by Nancy Walsh, Stephen Lidie

Stay ahead with the world's most comprehensive technology and business learning platform.

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, tutorials, and more.

Start Free Trial

No credit card required

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 ...

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, interactive tutorials, and more.

Start Free Trial

No credit card required