2010-06-26 51 views
6

我试图用C和GTK截屏整个屏幕。出于速度原因,我不想打电话给外部应用程序。我发现Python代码(Take a screenshot via a python script. [Linux]);我只需要弄清楚如何做到这一点在CC GTK截图

+1

它看起来像你链接到的Python代码是一个很好的婴儿床进入GTK API调用,你将需要使用C. – crazyscot 2010-06-26 15:25:48

+0

嗯,你是对的。在这个和gnome-screenshot代码之间,我已经明白了。谢谢。 – snostorm 2010-06-26 16:07:05

+1

[将GTK python脚本转换为C]可能的重复(http://stackoverflow.com/questions/3045850/convert-a-gtk-python-script-to-c) – u0b34a0f6ae 2010-06-26 17:29:52

回答

9

看GNOME的截图代码和Python的例子后,我想出了这个:

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; 
} 

这似乎很好地工作。谢谢!

+0

不幸的是,现在已经完全过时了,API自3.10 – Lothar 2017-04-05 23:35:17