[英]How to save as image an on-screen Canvas3D?
我正在做一個程序,根據用戶的輸入(用戶在SWT GUI上選擇圖像)來創建具有不同圖像紋理的模具(立方體)。
一旦用戶選擇了圖像,它就可以在一個單獨的對話框中可視化骰子,並在其上執行一些旋轉操作(請參見在執行少量旋轉后在屏幕快照中看到三個面孔)。
查看屏幕截圖: http : //pastebin.com/XqJfXL6i
我的問題從這里開始:我想保存畫布的內容(旋轉后的骰子,其背景為當前形式)。 我一直在尋找幾個代碼,我認為我的問題是因為我當前的畫布是“屏幕上”畫布,並且我需要一個屏幕外畫布,這樣可以保存內容。
我當前的代碼如下:
和..這里開始了問題。 它引發以下異常:
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.