簡體   English   中英

如何將屏幕上的Canvas3D保存為圖像?

[英]How to save as image an on-screen Canvas3D?

我正在做一個程序,根據用戶的輸入(用戶在SWT GUI上選擇圖像)來創建具有不同圖像紋理的模具(立方體)。

一旦用戶選擇了圖像,它就可以在一個單獨的對話框中可視化骰子,並在其上執行一些旋轉操作(請參見在執行少量旋轉后在屏幕快照中看到三個面孔)。

查看屏幕截圖: http : //pastebin.com/XqJfXL6i

我的問題從這里開始:我想保存畫布的內容(旋轉后的骰子,其背景為當前形式)。 我一直在尋找幾個代碼,我認為我的問題是因為我當前的畫布是“屏幕上”畫布,並且我需要一個屏幕外畫布,這樣可以保存內容。

我當前的代碼如下:

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();
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM