#!/usr/bin/perl use Cairo::GObject; use Glib::Object::Introspection; Glib::Object::Introspection->setup ( basename => 'Gtk', version => '3.0', package => 'Gtk3'); Gtk3::init ([]); my $window = Gtk3::Window->new ('toplevel'); my $button = Gtk3::Button->new_with_label ('Kazam!'); $window->add ($button); $window->show_all; my ($width, undef) = $button->get_preferred_width; my ($height, undef) = $button->get_preferred_height; my $surf = Cairo::ImageSurface->create ('argb32', $width,$height); my $cr = Cairo::Context->create ($surf); Glib::Idle->add (sub { $button->draw ($cr); Gtk3::main_quit (); }); Gtk3::main (); $surf->write_to_png ('draw-widget.png');