I am trying to get a screenshot of the desktop by using a transparent GtkWidget and then using gdk_pixbuf_get_from_drawable. When I check the saved GdkPixbuf I am getting a valid image, but the image does not include the background of the desktop but just the GtkWidget itself. Is there any way of working around this?
I am simply creating a GtkWidget and then controlling the paint events, the code for the paint and saving the image is below:
static gboolean on_window_expose_event(GtkWidget *widget, GdkEventExpose *event, gpointer data)
{
cairo_t *cr;
cr = gdk_cairo_create(widget->window); // create cairo context
cairo_set_source_rgba(cr, 1.0, 1.0, 1.0, 0.7);
cairo_set_operator(cr, CAIRO_OPERATOR_SOURCE);
cairo_paint(cr); // paint source
cairo_destroy(cr);
static int >
if ( 0 )
{
GdkPixbuf * pixbuf;
pixbuf = gdk_pixbuf_get_from_drawable( NULL, widget->window, colormap, 0, 0, 0, 0, 300, 200 );
if ( pixbuf != NULL )
{
GError * err = NULL;
gdk_pixbuf_save( pixbuf, "image.png", "png", &err, NULL );
}
once++;
}
return FALSE;
}
Thanks, Andy.
_______________________________________________ gtk-list mailing list gtk-list@xxxxxxxxx http://mail.gnome.org/mailman/listinfo/gtk-list
- Follow-Ups:
- Re: Desktop screenshot
- From: Claudio Saavedra
- Re: Desktop screenshot
- Prev by Date: Re: Displaying a v4l2 webcam output on memory buffer (rgb24) with GTK!
- Next by Date: Re: Desktop screenshot
- Previous by thread: how to install glib
- Next by thread: Re: Desktop screenshot
- Index(es):