2014-09-19 81 views
3

我正在尋找一種方式來截取任何正在運行的directX遊戲的Java應用程序的屏幕截圖。我使用下面的代碼如何使用directX的java截圖

Robot robot = new Robot(); 
GraphicsConfiguration config = GraphicsEnvironment.getLocalGraphicsEnvironment().getDefaultScreenDevice().getDefaultConfiguration(); 
BufferedImage screenshot = robot.createScreenCapture(config.getBounds()); 
ImageIO.write(screenshot,"png", file); 

這一個完美的地方,但在directX遊戲的任何地方。我對Java並不熟悉,更不用說使用DirectX,我只是想調整這些代碼。我google了很多,但一切都導致我已經有了相同的代碼。

你知道另一種截取DirectX遊戲截圖的方法嗎?

謝謝。

回答

0

調用GraphicsDevice#getFullScreenWindow可能工作,但我沒有真正測試過這段代碼。

BufferedImage screenshot; 
    GraphicsDevice gd = GraphicsEnvironment 
      .getLocalGraphicsEnvironment() 
      .getDefaultScreenDevice(); 
    Window window = gd.getFullScreenWindow(); 
    if(window == null) { 
     Robot robot = new Robot(); 
     GraphicsConfiguration config = gd.getDefaultConfiguration(); 
     screenshot = robot.createScreenCapture(config.getBounds()); 
    } else { 
     screenshot = new BufferedImage(window.getWidth(), 
       window.getHeight(), 
       BufferedImage.TYPE_INT_RGB); 
     window.paint(screenshot.getGraphics()); 
    } 
    ImageIO.write(screenshot, "png", file); 
+0

感謝您的回答,但問題是,調用'getFullScreenWindow()'後窗口'仍然'null'。 – user68293 2014-09-21 21:31:35

+0

@ user68293我在互聯網上找不到任何解釋如何在Java中執行此操作的內容。也許接受的答案[這裏](http://stackoverflow.com/questions/1962142/take-screenshot-of-directx-full-screen-application#1962286)將是一種替代方法。 – 2014-09-24 12:12:21