【发布时间】:2015-04-29 18:01:51
【问题描述】:
我正在尝试截取窗口屏幕截图以将其用作应用程序的背景。
这是我的代码:
try {
Robot robot = new Robot();
Rectangle captureSize = new Rectangle(new MainWindow().getX(), new MainWindow().getY(), MainWindow.getWIDTH(), MainWindow.getHEIGHT());
RenderManager.backgroundGUIs = robot.createScreenCapture(captureSize);
GUIManager.ThisGui = new GUI("inventory", null, false);
} catch(AWTException e) {
System.err.println("Error taking screenshot!");
}
这些是 MainWindow().getY() 和 MainWindow().getX() 方法:
public int getX() {
return (int) frame.getLocationOnScreen().getX();
}
public int getY() {
return frame.getY();
}
现在......它工作正常,但有一个问题。 frame.getLocationOnScreen().getX() 和 frame.getX() 返回带有窗口边框的位置,该位置不在屏幕截图中。好的,我可以手动计算边框大小来减去它,但是从 Windows 7 到 Windows 8,从 Windows 8 到 Mac 等窗口边框会发生变化。
那么...有没有一种方法可以获取框架位置或窗口边框大小来计算我需要什么?
感谢您的宝贵时间和回答!
【问题讨论】:
-
您只是想创建一个透明窗口吗?最新版本的 java 具有此功能,无需截图:docs.oracle.com/javase/tutorial/uiswing/misc/…
标签: java position window border frame