【问题标题】:How to capture screen image with mouse pointer on it in Java如何在Java中使用鼠标指针捕获屏幕图像
【发布时间】:2011-02-27 01:59:50
【问题描述】:

如何在Java中捕获带有鼠标指针的屏幕图像?知道我可以使用 Robot 类捕获屏幕,但它在没有鼠标指针的情况下捕获屏幕,所以这不是我的解决方案。

【问题讨论】:

  • 嗯,你是说操作系统? Windows Vista。这很重要吗?
  • 没关系。 Java 独立于平台。
  • @BalusC 是正确的,但有些平台有方便的工具,例如Grab.app 在 Mac OS X 上。

标签: java screen capture


【解决方案1】:

这不是直接可能的,但您可以使用MouseInfo#getPointerInfo() 获取指针当前所在位置的信息。

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

在获得BufferedImage 的屏幕截图后,您可以借助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"));

【讨论】:

  • 这不会保存实际的光标,只是文件中的占位符光标。如果我的光标不同(手形光标、拖动光标、调整光标大小、根本没有光标、控制面板中的自定义光标包),那么它会中断。
  • @Zom-B:正如回答的那样,这不是直接可能的。因此,如果您唯一的兴趣是光标位置,这确实是您最好的选择。如果您知道更好的解决方案,请随时发布:)
  • 1.它没有回答最初的问题,它只是给出了一些接近它的东西。 2. 我正在研究这个,因为我想检测显示器是否是全屏的(或者当鼠标被隐藏时,即使不是全屏),但这似乎是一个死胡同。
  • @Zom-B:正如回答的那样,这不是直接可能的。此后是 OP 可以获得的“最佳选择”。 Oneliner 的回答是“不,那是不可能的”。不是我的风格。同样,如果您知道更好的解决方案,请随时发布:)
  • 光标的gif是什么意思,对于不同的项目可以不一样?在文本框中,光标是文本光标,在超链接光标“手”...
【解决方案2】:

您可以使用 Java Native Access 来动态访问操作系统特定的鼠标光标/指针。

【讨论】:

  • 在哪里可以解决这个问题?您能否提供有关解决方案的更多详细信息?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2010-12-10
  • 1970-01-01
  • 2015-04-06
  • 1970-01-01
  • 2013-08-03
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多