2010-06-26 22 views
6

Próbuję zrobić zrzut ekranu całego ekranu za pomocą C i GTK. Nie chcę nawiązywać połączenia z zewnętrzną aplikacją ze względu na szybkość. Znalazłem kod Pythona do tego (Take a screenshot via a python script. [Linux]); Po prostu trzeba dowiedzieć się, jak to zrobić w C.Wykonanie zrzutu ekranu za pomocą C GTK

+1

Wygląda raczej na to, że kod Pythona, z którym się łączysz, jest dobrym elementem do wywołań GTK API, które będziesz musiał użyć w C. – crazyscot

+0

Hm, masz rację. Pomiędzy tym a kodem gnoma-screenshota, wymyśliłem to. Dziękuję Ci. – snostorm

+1

możliwy duplikat [Konwersja skryptu pyta GTK na C] (http://stackoverflow.com/questions/3045850/convert-a-gtk-python-script-to-c) – u0b34a0f6ae

Odpowiedz

9

Po patrząc na kod GNOME-screenshot i przykład Python, wpadłem na to:

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

który wydaje się działać idealnie. Dzięki!

+0

Niestety jest to teraz całkowicie nieaktualne, a interfejsy API są usuwane od 3.10 – Lothar

Powiązane problemy