Taking a screenshot with C\GTK

后端 未结 2 605
有刺的猬
有刺的猬 2020-12-28 11:05

I\'m trying to take a screenshot of the entire screen with C and GTK. I don\'t want to make a call to an external application for speed reasons. I\'ve found Python code for

相关标签:
2条回答
  • 2020-12-28 11:17

    9 years passed and as mentioned above API is removed.

    As far as I understand, currently the bare minimum to do this at Linux is:

    GdkWindow * root;
    GdkPixbuf * screenshot;
    gint x, y, width, height;
    
    root = gdk_get_default_root_window ();
    gdk_window_get_geometry (root, &x, &y, &width, &height);
    screenshot = gdk_pixbuf_get_from_window (root, x, y, width, height);
    // gdk_pixbuf_save...
    

    This is very slightly tested and may fail. Further reading is in gnome-screenshooter repo

    0 讨论(0)
  • 2020-12-28 11:38

    After looking at the GNOME-Screenshot code and a Python example, I came up with this:

    GdkPixbuf * get_screenshot(){
        GdkPixbuf *screenshot;
        GdkWindow *root_window;
        gint x_orig, y_orig;
        gint width, height;
        root_window = gdk_get_default_root_window ();
        gdk_drawable_get_size (root_window, &width, &height);      
        gdk_window_get_origin (root_window, &x_orig, &y_orig);
    
        screenshot = gdk_pixbuf_get_from_drawable (NULL, root_window, NULL,
                                               x_orig, y_orig, 0, 0, width, height);
        return screenshot;
    }
    

    Which seems to work perfectly. Thanks!

    0 讨论(0)
提交回复
热议问题