How to captu开发者_StackOverflowre 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.
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"));
You can use Java Native Access in order to access operating system specific mouse cursors/pointers dynamically.
精彩评论