Я сейчас занимаюсь разработкой 2D-игры на Java (я использую 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);
}
но в результате получается белое окно:
![you can see it here](https://i.stack.imgur.com/HHLdn.png)
Возможно, вы знаете, как создать скриншот из только рамки ?