我目前正在用Java开发一个2D游戏(我使用的是JFrame)。我想,当某个按钮被按下时,保存框架的内容并将其存储在图像中。目前,我使用以下代码:
Robot robot = new Robot();
Rectangle screenSize = new Rectangle(display.getFrame().getX() + 3, display.getFrame().getY() + 26, handler.getWidth(), handler.getHeight());
BufferedImage screenShot = robot.createScreenCapture(screenSize); ImageIO.write(screenShot,File("D:\\Programming\\First2DGame\\res\\textures\\Screenshot.png"));
问题是,这需要屏幕的一部分的屏幕截图,而不是帧本身的。这意味着,例如,如果我将窗口移动到屏幕的右下角,我会收到一个不一致的通知,然后我按下我的按钮,通知将出现在屏幕截图中。
我已经搜索过了,我试过这段代码:
try
{
BufferedImage image = new BufferedImage(getWidth(), getHeight(), BufferedImage.TYPE_INT_RGB);
Graphics2D graphics2D = image.createGraphics();
frame.paint(graphics2D);
ImageIO.write(image,"jpeg", new File("D:\\Programming\\First2DGame\\res\\textures\\Screenshot.png"));
}
catch(Exception e)
{
e.printStackTrace;
}
}
protected void paintComponent(Graphics g)
{
g.drawRect(50,50,50,50);
}
但是结果是一个白色的窗口:
您可能知道如何创建仅 frame的屏幕截图
https://stackoverflow.com/questions/56208544
复制相似问题