首页 > 解决方案 > 如何将图像从 BufferStrategy 绘制到 Png 文件?

问题描述

我创建了一个生成雪花的 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 图像。希望您能够帮助我。

标签: javagraphicsawtpngbufferstrategy

解决方案


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将图像写入磁盘。有关详细信息,请参阅写入/保存图像


推荐阅读