gpt4 book ai didi

java - 如何将屏幕上的 Canvas3D 保存为图像?

转载 作者:行者123 更新时间:2023-12-01 12:12:42 25 4
gpt4 key购买 nike

我正在编写一个程序,根据用户的输入(用户在 SWT GUI 上选择图像)创建具有不同图像纹理的骰子(立方体)。

一旦用户选择图像,它就可以在单独的对话框中可视化骰子,并对其执行一些旋转操作(请参阅,执行小旋转后可以在屏幕截图中看到三个面孔)。

查看截图:http://pastebin.com/XqJfXL6i

我的问题从这里开始:我想保存 Canvas 的内容(旋转后背景为当前形式的骰子)。我一直在搜索几个代码,我认为我的问题是因为我当前的 Canvas 是“屏幕上” Canvas ,我需要一个屏幕外 Canvas ,这将允许保存内容。

我当前的代码如下:

http://pastebin.com/ZAv0ATJN

而且..问题就开始了。它抛出这个异常:

java.lang.IllegalStateException:Canvas3D:不在离屏模式下

具体来说,它在这一行失败:

        ImageComponent2D ic2d = canvas.getOffScreenBuffer();

正如你所看到的,我之前尝试过有几行注释,但它们都不起作用。

有关于如何做的任何线索吗?

谢谢!

最佳答案

根据 gouessej 提供的评论(谢谢!)最后我使用了这段代码,它可以很好地解决我的疑问:

private void saveImage(String img) throws Exception {
FileOutputStream fileOut = new FileOutputStream(img);
Robot r = new Robot();
BufferedImage bi = r.createScreenCapture(new java.awt.Rectangle(
(int) frame.getLocationOnScreen().getX(), (int) frame
.getLocationOnScreen().getY(), frame.getBounds().width,
frame.getBounds().height));
ImageIO.write(bi, "jpeg", fileOut);
fileOut.flush();
fileOut.close();
}

关于java - 如何将屏幕上的 Canvas3D 保存为图像?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27189766/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com