andrea86re
25-05-2011, 16:30
Ciao a tutti,
Sto facendo un porting da windows a linux senza avere troppa esperienza con quest'ultimo OS.
Devo prendere uno screenshot di una finestra che può essere in parte coperta da altre finestre.
Con Windows e le WinAPI ho risolto facilmente in backgroud, mentre su linux pare che se la finestra è coperta i pixel letteralmente non esistono, e quindi è impossibile farne una copia.
La soluzione, anche se meno elegante, è quella di portare prima la finestra in primo piano per poi farne lo screenshot.
Per prima cosa ottengo l'ID della finestra usando Xquerytree(), dopodichè provo a portarla in primo piano usando Xraisewindow(pointer,id); e XSetInputFocus()...
Il pointer è ottenuto da: pointer = XOpenDisplay(NULL);
mentre l'ID della finestra è sicuramente corretto.
L'effetto sulla finestra incriminata è però nullo, e quindi il successivo sceenshot è nero quando la finestra è nascosta.
Utilizzo Ubuntu.
Avete qualche idea su cosa possa andare storto? Altre vie percorribili?
grazie!
Sto facendo un porting da windows a linux senza avere troppa esperienza con quest'ultimo OS.
Devo prendere uno screenshot di una finestra che può essere in parte coperta da altre finestre.
Con Windows e le WinAPI ho risolto facilmente in backgroud, mentre su linux pare che se la finestra è coperta i pixel letteralmente non esistono, e quindi è impossibile farne una copia.
La soluzione, anche se meno elegante, è quella di portare prima la finestra in primo piano per poi farne lo screenshot.
Per prima cosa ottengo l'ID della finestra usando Xquerytree(), dopodichè provo a portarla in primo piano usando Xraisewindow(pointer,id); e XSetInputFocus()...
Il pointer è ottenuto da: pointer = XOpenDisplay(NULL);
mentre l'ID della finestra è sicuramente corretto.
L'effetto sulla finestra incriminata è però nullo, e quindi il successivo sceenshot è nero quando la finestra è nascosta.
Utilizzo Ubuntu.
Avete qualche idea su cosa possa andare storto? Altre vie percorribili?
grazie!