[gelöst] Desktopbereich bestimmen und Screenshot erstellen

Alles rund um die Programmierung mit Qt
Antworten
vDeVeron
Beiträge: 6
Registriert: 26. Februar 2011 16:35

[gelöst] Desktopbereich bestimmen und Screenshot erstellen

Beitrag von vDeVeron »

Hallo Forum,

ich bin noch ein Anfänger in Sachen Qt und ich weiß zur Zeit nicht, wie ich die Sache angehen soll.
Und zwar arbeite ich auf Kubuntu und hier existiert ein schönes Tool namens KSnapshot.
Ich möchte einen kleinen Clone programmieren, wobei mir das wichtigste ist, einen bestimmten Bereich auf den Desktop auszuwählen, den ich "fotographieren" möchte.
Das einzige Problem, welches ich zur Zeit habe, ist es diesen Bereich direkt auf den Desktop auszuwählen.

Ich brauche also die Koordinaten auf dem Desktop, von wo aus ich den Bereich auswählen möchte.

Wie macht es das Programm?

Ich hab mir folgendes überlegt:

1. Ich hole mir irgendwie einen Pointer auf den Desktop und male dann auf den Desktop die Markierung
2. Ich erstelle ein großes transparentes Fenster über den Desktop, auf dem ich dann die Markierung male und es dann eben vom Desktopscreenshot ausschneide (Echtzeit)
3. Ich mache ein Screenshot vom Fenster, stelle es auf einem maximierten Fenster dar und zeichne dadrauf den Bereich, von dem ich den Screenshot haben möchte.

Am passensten erscheinst mir Lösung Nummer 2. Ich erstelle ein maximiertes Fenster mit transparenten Hintergrund, wähle den Bereich aus, bekomme so die Koordinaten und dann lasse ich ein Screenshot davon erstellen.

Was meint ihr?
Zuletzt geändert von vDeVeron am 8. März 2011 12:24, insgesamt 1-mal geändert.
franzf
Beiträge: 3114
Registriert: 31. Mai 2006 11:15

Beitrag von franzf »

Warum in die Ferne schweifen, wenn das Gute liegt so nah...

<qt_install_dir>/examples/desktop/screenshot
Da du unter kubuntu unterwegs bist, musst du dir wohl erst die Qt-SOurcen ziehen, mit der QtSdk kommen sie auch mit. Würde aber auf Distributions-Repos zurückgreifen, um den Creator zu installieren - also qt.nokia.com und die qt-everywhere-sourcen herunterladen.
vDeVeron
Beiträge: 6
Registriert: 26. Februar 2011 16:35

Beitrag von vDeVeron »

Ja danke, das kenn ich schon.

Doch da fehlt nun diese Rect-Funktion, um nur einen bestimmten Bereich auf den Desktop als Bild zu speichern:

Code: Alles auswählen

----------------------------------
. DESTKOP                          .
.               -----------            .
.               . Bereich.            .
.               -----------            .
.                                         .
----------------------------------
Um mich nicht falsch zu verstehen: Ich weiß, wie ich diesen Bereich direkt per Funktion ausschneiden lassen kann, aber ich will diesen Bereich mit der Maus auswählen können und dafür muss ich dann eine Art "Selection" auf den Bildschirm malen.
vDeVeron
Beiträge: 6
Registriert: 26. Februar 2011 16:35

Beitrag von vDeVeron »

UPDATE: Ich habe es geschafft!
Es hat mich insgesamt eine Stunde gedauert und war gar nicht so schwer.

Ich habe zwei Klassen.

1. Basisklasse Screenshot
2. Klasse RectSelector

Screenshot ist ein Fenster mit 2 Buttons (Ganzer Bildschirm, Bereich auswählen)

Wenn der zweite Button gedrückt wird, wird ein RectSelector-Fenster geöffnet im Fullscreen-Modus, welches transparent ist.
Dann mache ich eine Selektion und emitiere sie per Signal an die Screenshot-Klasse. Diese nimmt sich die Koordinaten und schließt RectSelector. Nun habe ich die Koordinaten und kann das Screenshot machen.
Antworten