0

我创建了一个生成雪花的 Java 程序,我想在程序完成绘图后将创建的图像保存为 .png 文件。

我在互联网上搜索过,但我发现只有使用 BufferedImage 的程序,而我使用的是 BufferStrategy,所以我不知道从哪里开始。

我的程序中的 draw 方法使用 BufferStrategy 来创建 Graphics 组件。例如,要画一条简单的线,方法是:

bs = display.getCanvas().getBufferStrategy();
if (bs == null) {
    display.getCanvas().createBufferStrategy(3);
    return;
}

g = bs.getDrawGraphics();
g.clearRect(0, 0, width, height);
g.setColor(Color.BLACK);
g.drawLine(0, 0, 50, 50);

我想要的是获得程序在屏幕上绘制的内容的精确副本,以保存为 .png 图像。希望您能够帮助我。

4

2 回答 2

0

BufferedStrategy和之间的共同点BufferedImageGraphics,因此您想编写一个绘制例程,以便您可以简单地传递Graphics对它的引用

public void render(Graphics g) {
    g.clearRect(0, 0, width, height);
    g.setColor(Color.BLACK);
    g.drawLine(0, 0, 50, 50);
}

然后你可以传递你想要的任何上下文。

BufferedImage img = new BufferedImage(width, height, BufferedImage.TYPE_RGB);
Graphics2D g2d = img.createGraphics();
render(g2d);
g2d.dispose();

然后您可以使用ImageIO.write将图像写入磁盘。有关详细信息,请参阅写入/保存图像

于 2019-01-29T18:47:59.583 回答
0

为什么不截取屏幕截图,然后将其粘贴到 MS Paint 或其他(以及更好的)图像编辑软件(如 Photoshop 或 fire alpaca)上?那应该可以解决您的问题。

于 2019-01-29T15:25:55.033 回答