Zeichnen eines Begrenzungsrechtecks, um auszuwählen, welcher Bereich aufgezeichnet werden soll

7

Wie zeichne ich das halbtransparente Rechteck auf dem Bildschirm? Das kann kein JFrame sein, da JFrames die üblichen Optionen zum Schließen, Minimieren und Maximieren oben rechts haben.
Wenn es in der Tat ein Schwungkompetent ist, wie ist es in Luft gegriffen? Ohne es in JFrame überhaupt einzufügen? Bitte sagen Sie mir, was es ist und wie ich es umsetzen kann ...

    
Little Child 19.12.2012, 08:19
quelle

3 Antworten

9

Die unmittelbare Idee, die Ihnen einfällt, ist java.awt.Robot um einen Screenshot aufzunehmen, malen Sie das zum rahmenlosen Fenster. Von dort können Sie einfach ein Rechteck darauf zeichnen

Mit Beispiel aktualisiert

... hat etwas Zeit gebraucht ...

%Vor%

Mit SnipIt-Beispiel aktualisieren

Einige Leute haben vorgeschlagen, ein transparentes Fenster über dem oberen Bildschirmrand zu verwenden, das wird nicht funktionieren, da transparente Fenster nicht wirklich auf Mausklicks reagieren, WENN sie etwas zu bemalen haben, das ihnen erlaubt Mausereignis wird gefangen.

Es wurde auch vorgeschlagen, dass Sie ein Fenster als Auswahlmechanismus verwenden, dies ist eine gültige Antwort, aber ich würde (persönlich) finden, dass dies eine ungeeignete Lösung ist, da der Benutzer einfach auf die Auswahl klicken und ziehen soll Rechteck (IMHO).

Ein anderer Ansatz ist etwas wie SnipIt.

%Vor%     
MadProgrammer 19.12.2012, 08:24
quelle
7

Update Multi-Monitor-Unterstützung für das Beispiel Antwort von @MadProgrammer.

Ohne ExtendedState(JFrame.MAXIMIZED_BOTH) und pack()

%Vor% %Vor%     
oliholz 19.12.2012 09:37
quelle
3

Sie können einen transparenten, undekorierten Rahmen verwenden, um einen einfachen Rahmen zu erstellen.

%Vor%

Der Frame muss möglicherweise auch setOpaque sein, oder die Panelgröße muss möglicherweise behandelt werden, aber das ist die allgemeine Idee davon.

    
Vulcan 19.12.2012 08:27
quelle

Tags und Links