Como capturar a imagem da canvas com o ponteiro do mouse sobre ele em Java

Como capturar a imagem da canvas com o ponteiro do mouse sobre ele em Java? Em saber que eu posso capturar a canvas com a class Robot, mas captura canvas sem ponteiro do mouse sobre ele, então isso não é uma solução para mim.

Isso não é diretamente possível, mas você pode usar MouseInfo#getPointerInfo() para obter informações onde o ponteiro está localizado no momento.

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

Depois de obter a captura de canvas como BufferedImage , você pode colocar sua própria imagem do cursor exatamente nesse local na captura de canvas com a ajuda da 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")); 

Você pode usar o Java Native Access para acessar dinamicamente cursores / pointers de mouse específicos do sistema operacional.