Seite 1 von 1

Wie machen die das in KSnapshot???

Verfasst: 11. September 2007 20:54
von gahre
Hallo! Es dreht sich eigentlich nicht um ein Qt-Problem, da ich (ausnahmsweise ;) ) keine Qt-Anwendung programmieren will, sondern ein Plugin... Da jedoch KSnapshot in Qt programmiert ist, frage ich hier. Also:
In KSnapshot ist es möglich, einen Screenshot von nur einer "Region" in einem Fenster anzufertigen, und das unabhängig davon, ob Qt oder GTK oder sonstiges verwendet wird... Wie kann man per Mausklick auf ein Fenster die Dimensionen des Bereiches rausfinden, auf den man gerade geklickt hat? Handelt es sich hierbei um eine native xlib-Funktion? Oder gibt es da evtl sogar ein kleines Programm ähnlich xprop, das mir ähnliche Informationen ausspuckt?
(*g* Noch mehr: würde das dann auch ohne Mausklick funktionieren?)

Vielen Dank

Gahre

Verfasst: 11. September 2007 21:25
von upsala
apt-get source ksnapshot

Verfasst: 12. September 2007 14:00
von gahre
Ach nee... Leider verfüge ich nicht über so viel Menschenverstand, um mich vorher nach source-packages umzusehen...
Das wollte ich eben vermeiden, da ich Fedora verwende und ksnapshot nur im Paket kdegraphics erhältlich ist und ich nicht alle quelltexte der pakete, die darin enthalten sind installieren wollte nur um diese Frage zu beantworten...
Wieso schreiben wir überhaupt Dokumentation, wenn soviel Quelltexte im Internet herumschwirren? Wäre das nicht alles viel einfacher??? (@upsala: IRONIIIIEEEE)

Verfasst: 12. September 2007 14:22
von Christian81
Ein bischen suchen und schon findet man auch den Quelltext von KSnapshot...
http://websvn.kde.org/trunk/KDE/kdegraphics/ksnapshot/

Verfasst: 12. September 2007 19:03
von gahre
Sehr schön, merci, hab nur immer den von älteren Versionen gefunden

Verfasst: 14. September 2007 16:09
von mollitz
QPixmap pm( QPixmap::grabWindow( QX11Info::appRootWindow(), x, y, w, h ) );

das sieht doch nicht schlecht aus, oder? (is aus der grabwindow.cpp)

Verfasst: 16. September 2007 10:43
von gahre
Ja, und vorher wird noch eine Liste von Dimensionen aller Fenster geholt und das kleinste Fenster gesucht, dass den Mauszeiger enthält - also scheinbar handelt es sich bei einer "Region" in einem Fenster um ein eigenes Fenster, bzw. "Unterfenster", und dessen Koordinaten werden dann in die von Dir benannte Funktion eingestetzt...

So hab ich das verstanden... *g*