如何在javafx中拍摄屏幕选定区域的快照?

Naz*_*zim 4 java javafx javafx-2 javafx-8

我正在尝试截取当前在屏幕上打开的任何文件的屏幕截图。谷歌之后我得到的只是仅在javafx中截取场景的屏幕截图。我不想使用任何 AWT 或 Swing 组件。那么有什么办法吗?

owe*_*all 6

目前javafx.scene.robot.Robot可以使用,可以进行屏幕截图。我不知道\xe2\x80\x99是否是最初提出问题的时候。方法是:

\n\n
javafx.scene.robot.Robot robot = new Robot();\nWritableImage imgReturn = robot.getScreenCapture(imgOut, new Rectangle2D());\n
Run Code Online (Sandbox Code Playgroud)\n\n

可选的矩形指定要捕获的屏幕区域。如果未提供,则包括整个屏幕。imgReturn可以分配生成的可写图像。imgOut是一个可写的图像输出参数,如果您之前定义了它并且它的尺寸正确,它也可以存储结果。否则,将其保留为空。

\n\n

该方法必须在 JavaFX 应用程序线程上运行(Platform.runLater()如果从另一个线程调用它\xe2\x80\x99,则可以使用它来确保这一点)。

\n\n

如果您想要截取特定应用程序窗口的屏幕截图,您可以分析整个屏幕的捕获并查找包含您要查找的窗口的区域。

\n\n

如果您知道窗口坐标和尺寸,则可以将其插入到 中的第二个参数中getScreenCapture

\n\n

您还可以使用@GOXR3PLUS 中的半透明叠加阶段方法,其中用户可以定义一个矩形(例如,通过单击并拖动来定义左上角和右下角)。然后您可以隐藏覆盖阶段并截取该矩形内的区域的屏幕截图。

\n