How to capture screen image with mouse pointer on it in Java? In know that i can capture screen with Robot class, but it captures screen without mouse pointer on it, so this is not an solution for me.
+2
A:
That's not directly possible, but you can use MouseInfo#getPointerInfo()
to get information where the pointer is currently located.
int x = MouseInfo.getPointerInfo().getLocation().x;
int y = MouseInfo.getPointerInfo().getLocation().y;
After getting the screenshot as BufferedImage
, you can place your own cursor image at exactly that location on the screenshot with help of 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"));
BalusC
2010-06-02 23:32:07
+1 Proof by counter-example! :-)
trashgod
2010-06-03 01:20:43