2010-06-02 42 views
8

Làm thế nào để chụp ảnh màn hình bằng con trỏ chuột trên nó trong Java? Trong biết rằng tôi có thể chụp màn hình với lớp Robot, nhưng nó chụp màn hình mà không có con trỏ chuột trên nó, vì vậy đây không phải là một giải pháp cho tôi.Cách chụp ảnh màn hình bằng con trỏ chuột trên nó trong Java

+0

Nền tảng lưu trữ nào? – trashgod

+0

Um, bạn có nghĩa là hệ điều hành? Windows Vista. Điều này quan trọng? – solgar

+0

Điều đó không quan trọng. Java là nền tảng độc lập. – BalusC

Trả lời

18

Điều đó không trực tiếp có thể, nhưng bạn có thể sử dụng MouseInfo#getPointerInfo() để nhận thông tin nơi con trỏ hiện đang được đặt.

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

Sau khi nhận được ảnh chụp màn hình như BufferedImage, bạn có thể đặt hình ảnh con trỏ của riêng bạn tại chính xác vị trí đó trên ảnh chụp màn hình với sự giúp đỡ của Java API 2D.

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

Bằng chứng +1 bằng ví dụ ngược! :-) – trashgod

+0

Điều này không lưu con trỏ thực, chỉ cần một con trỏ giữ chỗ từ tệp. Nếu con trỏ của tôi khác (con trỏ tay, kéo con trỏ, thay đổi kích thước con trỏ, không con trỏ nào cả, gói con trỏ tùy chỉnh trong bảng điều khiển), thì con trỏ sẽ bị hỏng. –

+1

@ Zom-B: Như đã trả lời, điều đó không thể trực tiếp. Vì vậy, đây thực sự là đặt cược tốt nhất của bạn mà nên là đủ nếu quan tâm duy nhất của bạn là vị trí con trỏ. Nếu bạn biết một giải pháp tốt hơn, hãy đăng nó :) – BalusC

0

Bạn có thể sử dụng Java Native Access để truy cập tự động con trỏ/con trỏ chuột của hệ điều hành.

+0

Nơi bạn có thể khắc phục vấn đề này? bạn có thể cho chúng tôi biết thêm chi tiết về giải pháp không? –

Các vấn đề liên quan