2010-06-02 13 views
8

Jak przechwycić obraz ekranu za pomocą wskaźnika myszy na nim w Javie? Wiedz, że mogę przechwytywać ekran za pomocą klasy Robot, ale przechwytuje ekran bez wskaźnika myszy, więc nie jest to rozwiązanie dla mnie.Sposób przechwytywania obrazu ekranowego za pomocą wskaźnika myszy na nim w języku Java

+0

Jakiej platformy hosta? – trashgod

+0

Um, masz na myśli OS? Windows Vista. To ma znaczenie? – solgar

+0

To nie powinno mieć znaczenia. Java jest niezależna od platformy. – BalusC

Odpowiedz

18

Nie jest to bezpośrednio możliwe, ale można użyć numeru MouseInfo#getPointerInfo(), aby uzyskać informacje o miejscu, w którym znajduje się wskaźnik.

int x = MouseInfo.getPointerInfo().getLocation().x; 
int y = MouseInfo.getPointerInfo().getLocation().y; 

Po uzyskaniu ekranu jako BufferedImage, można umieścić swój własny obraz kursora w dokładnie tym miejscu na zrzucie z pomocą Java 2D API.

Rectangle screen = new Rectangle(Toolkit.getDefaultToolkit().getScreenSize()); 
BufferedImage screenCapture = new Robot().createScreenCapture(screen); 

Image cursor = ImageIO.read(new File("c:/cursor.gif")); 
int x = MouseInfo.getPointerInfo().getLocation().x; 
int y = MouseInfo.getPointerInfo().getLocation().y; 

Graphics2D graphics2D = screenCapture.createGraphics(); 
graphics2D.drawImage(cursor, x, y, 16, 16, null); // cursor.gif is 16x16 size. 
ImageIO.write(screenCapture, "GIF", new File("c:/capture.gif")); 
+0

+1 Dowód według kontrprzykładu! :-) – trashgod

+0

To nie zapisuje rzeczywistego kursora, tylko kursor zastępczy z pliku. Jeśli mój kursor jest inny (kursor ręki, kursor przeciągania, zmiana kursorów, brak kursora, niestandardowy pakiet kursora w panelu kontrolnym), to się zepsuje. –

+1

@ Zom-B: Zgodnie z odpowiedzią, nie jest to bezpośrednio możliwe. Jest to więc Twój najlepszy zakład, który powinien wystarczyć, jeśli twoim jedynym zainteresowaniem jest pozycja kursora. Jeśli znasz lepsze rozwiązanie, możesz to napisać :) – BalusC

0

Można użyć Java Native Access, aby uzyskać dynamicznie dostęp do kursorów/wskaźników myszy w systemie operacyjnym.

+0

Gdzie można naprawić ten problem? czy możesz podać nam więcej szczegółów na temat rozwiązania? –

Powiązane problemy