2014-09-19 47 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