我知道使用gtk2可以使用gtk2hs将屏幕捕获到pixbuf中。这里给出了解决方案:Screen capture in Haskell?。 问题是gtk3中缺少pixbufGetFromDrawable(至少在gtk2hs中)。有人可以推荐这个问题的解决方案吗?我需要这个用于Linux,而不是Windows。 为方便起见,链接的解决方案在这里重复。
import Graphics.UI.Gtk
import Graphics.UI.Gtk.Gdk.Screen
import System.Environment
main = do
[fileName] <- getArgs
initGUI
Just screen <- screenGetDefault
window <- screenGetRootWindow screen
size <- drawableGetSize window
origin <- drawWindowGetOrigin window
Just pxbuf <- pixbufGetFromDrawable window ((uncurry . uncurry Rectangle) origin size)
pixbufSave pxbuf filename "png" []