jms*_*ggi 1 java mouse awt awtrobot
好吧,大多数人会认为它是重复的,因为它已经写在任何地方,它不是真的可行,唯一的选择是使用awt机器人做截图.
但是......问题是鼠标光标甚至没有出现在AWT机器人生成的图片中......我尝试gnome-screeshots,在那里我可以看到鼠标光标.但是从java截图来看,什么都没有.整个图片,但不是鼠标光标.这就像它在拍照前隐藏它一样.我搜索像setIncludeMouseCursor这样的参数或类似的东西没有运气.
我可以捕获鼠标位置,这很好.但是,如果我捕获这个区域,再没有光标.
知道如何强制执行robot.createScreenCapture来捕获鼠标光标吗?
您需要使用MouseInfo
类并使用其方法static getPointerInfo()
来获取一个Pointer
对象来表示光标在屏幕上的位置.
获得该职位后,您可以使用Robot
截屏作为a BufferedImage
并在其上绘制光标.简单!
SSCCE
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();
}
}
}
Run Code Online (Sandbox Code Playgroud)
产量
蓝色方块的左上角是我光标的位置.
归档时间: |
|
查看次数: |
2303 次 |
最近记录: |