gpt4 book ai didi

java - 如何在Java中捕获鼠标光标?

转载 作者:行者123 更新时间:2023-11-29 06:35:40 24 4
gpt4 key购买 nike

好吧,你们中的大多数人会认为它是重复的,因为到处都写着它不是真正可行的,唯一的选择是使用 awt robot 进行屏幕截图。

但是...问题是鼠标光标甚至没有出现在 AWT 机器人生成的图片中...我尝试了 gnome-screeshots,在那里我可以看到鼠标光标。但是从java截图来看,什么都没有。整个图片,但不是鼠标光标。就像它在拍照之前隐藏它一样。我搜索了一个参数,如 setIncludeMouseCursor 或类似的东西,但没有成功。

我可以捕获鼠标位置,这很好。但是如果我只捕获这个区域,同样没有光标。

知道如何强制 robot.createScreenCapture 捕获鼠标光标吗?

最佳答案

您需要使用 MouseInfo 类并使用它的静态方法 getPointerInfo() 来获取一个 Pointer 对象来表示光标的位置屏幕上。

一旦你有了位置,你就可以使用Robot截屏作为BufferedImage并在上面绘制光标。简单的 !

中南合作中心

package stack;

import java.awt.AWTException;
import java.awt.GraphicsDevice;
import java.awt.GraphicsEnvironment;
import java.awt.MouseInfo;
import java.awt.PointerInfo;
import java.awt.Rectangle;
import java.awt.Robot;
import java.awt.image.BufferedImage;
import java.io.File;

import javax.imageio.ImageIO;

public class GetMousePointer {
public static void main(String[] args) {
final String USER_HOME = System.getProperty("user.home");

GraphicsDevice gd = GraphicsEnvironment.getLocalGraphicsEnvironment().getDefaultScreenDevice();
int width = gd.getDisplayMode().getWidth();
int height = gd.getDisplayMode().getHeight();

BufferedImage blackSquare = new BufferedImage(50, 50, BufferedImage.TYPE_3BYTE_BGR);
for(int i = 0; i < blackSquare.getHeight(); i++){
for(int j = 0; j < blackSquare.getWidth(); j++){
blackSquare.setRGB(j, i, 128);
}
}


try {
Robot robot = new Robot();
BufferedImage screenshot = robot.createScreenCapture(new Rectangle(0,0,width,height));
PointerInfo pointer = MouseInfo.getPointerInfo();
int x = (int) pointer.getLocation().getX();
int y = (int) pointer.getLocation().getY();

screenshot.getGraphics().drawImage(blackSquare, x, y, null);
ImageIO.write(screenshot, "PNG", new File(USER_HOME, "screenshot.PNG"));

} catch (Exception e) {
e.printStackTrace();
}
}
}

输出
enter image description here

蓝色方 block 的左上角是我光标的位置。

关于java - 如何在Java中捕获鼠标光标?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21206986/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com