Hi,

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 once = 0;
  if ( once == 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
[email protected]
http://mail.gnome.org/mailman/listinfo/gtk-list

Reply via email to