Please use this command to build gcc `pkg-config --cflags gtk+-2.0 --libs gtk+-2.0 glib-2.0 gthread-2.0` app_name.c
On Wed, Jun 16, 2010 at 12:35 PM, Tigran Piloyan <[email protected]>wrote: > Hi, i tried to copy from the GdkWindow an image with the function > gdk_drawable_copy_to_image() but everytime i get different images under > Ubuntu with gnome, in KDE it allways copied the right image . I tried to > set USE_XFT = 0 to disable antialiasing, but it didn't help. > > > #include <gtk/gtk.h> > #include <glib.h> > #include <stdio.h> > > int main (int argc, char **argv) > { > GdkWindow *window = NULL; > GdkWindowAttr attr; > GdkRectangle rectangle; > GdkColormap *colormap = NULL; > GdkImage *image = NULL; > GdkGC *gc = NULL; > GdkColor color; > GError *err = NULL; > gchar *buffer; > gsize count; > GdkPixbuf *pixbuf = NULL; > > gtk_init(&argc, &argv); > > colormap = gdk_colormap_get_system(); > if(colormap == NULL) > { > printf("Unable to create a GdkColormap,gdk_colormap_get_system > returns NULL."); > return 1; > } > > rectangle.x = 0; > rectangle.y = 0; > rectangle.width = 300; > rectangle.height = 300; > > attr.title = "Window"; > attr.x = 0; > attr.y = 0; > attr.width = 500; > attr.height = 600; > attr.wclass = GDK_INPUT_OUTPUT; > attr.window_type = GDK_WINDOW_TOPLEVEL; > > window = gdk_window_new(NULL, &attr, GDK_WA_X | GDK_WA_Y > |GDK_WA_TITLE); > if(window == NULL) > { > printf("The gdk_window_new function returned NULL, unable to create > GdkWindow."); > return 1; > } > > gdk_window_show(window); > gdk_flush(); > sleep(3); > > gc = gdk_gc_new(window); > if(gc == NULL) > { > printf("Unable to create a GdkGC, gdk_gc_new returns NULL."); > return 1; > } > > color.red = 100 * (65535 / 255); > color.green = 50 * (65535 / 255); > color.blue = 100 * (65535 / 255); > > gdk_gc_set_rgb_fg_color(gc, &color); > > gdk_window_begin_paint_rect(window, &rectangle); > gdk_draw_rectangle(window, gc, TRUE, 0, 0, 200, 200); > gdk_window_end_paint(window); > > image = gdk_drawable_copy_to_image(window, NULL, 0, 0, 0, 0, > attr.width, attr.height); > if(image == NULL) > { > printf("Unable to create a GdkImage, gdk_drawable_copy_to_image > returns NULL."); > return 1; > } > > pixbuf = gdk_pixbuf_get_from_image (NULL, image, colormap, 0, 0, 0, 0, > attr.width, attr.height); > if(pixbuf == NULL) > { > printf("Unable to create a GdkPixbuf, gdk_pixbuf_get_from_image > returns NULL."); > return 1; > } > > gdk_pixbuf_save_to_buffer (pixbuf, &buffer, &count, "jpeg", &err, > "quality", "100", NULL); > > gdk_pixbuf_save(pixbuf, "window_image.jpg", "jpeg", &err, "quality", > "100", NULL); > > sleep(3); > > return 0; > } > > > > > The image saved in window_image.jpg doesn't match with drawn on window > image > -- > Tigran Piloyan > > Linux Verification Center, ISPRAS, RAU > web: http://www.linuxtesting.org > e-mail: [email protected] > -- Tigran Piloyan Linux Verification Center, ISPRAS, RAU web: http://www.linuxtesting.org e-mail: [email protected]
_______________________________________________ gtk-list mailing list [email protected] http://mail.gnome.org/mailman/listinfo/gtk-list
