0

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

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

见截图: http: //pastebin.com/XqJfXL6i

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

我当前的代码如下:

http://pastebin.com/ZAv0ATJN

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

java.lang.IllegalStateException:Canvas3D:不在屏幕外模式

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

        ImageComponent2D ic2d = canvas.getOffScreenBuffer();

如您所见,有几行评论是我之前尝试过的,但它们也没有起作用。

关于如何做的任何线索?

谢谢!

4

1 回答 1

1

根据 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();
}
于 2014-12-06T17:10:09.290 回答